關(guān)于Apache Shiro的初步學(xué)習(xí)

權(quán)限控制大體上分類:

① 在程序中,通過Subject編程方式進行權(quán)限控制

② 配置Filter 實現(xiàn)URL級別粗粒度權(quán)限控制(通過在權(quán)限表里查看該用戶是否存在URL地址判斷)

基于過濾器Filter 來實現(xiàn)

③ 配置代理 基于注解實現(xiàn)細粒度權(quán)限控制(通過在業(yè)務(wù)層添加@Permission("person_add")檢測客戶權(quán)限后決定是否執(zhí)行)

--補充一點就是基于自定義注解實現(xiàn)的權(quán)限控制,是交由>Spring管理 可以返回對象代理對象银觅,在訪問真實對象每個方法時结序,查詢數(shù)據(jù)庫判斷是否具有注解需要的權(quán)限骑歹,允許or攔截

④ 在頁面中使用 shiro自定義標(biāo)簽實現(xiàn) 頁面顯示權(quán)限控制

首先是shiro的體系結(jié)構(gòu)

Authentication :認(rèn)證(用戶登錄過程)
Authentization :授權(quán)(用戶具有哪些權(quán)限卖氨,在這些權(quán)限下能干什么)
Cryptography:數(shù)據(jù)安全加密
Session Manangement 會話管理
Web Integration web系統(tǒng)集成
Integrations 集成其他應(yīng)用、spring耀里、緩存框架

shiro運行的主要流程

application code --》 subject --》securityManager --》realm
applicationCode 用戶編寫的代碼
Subject 就是shiro管理的用戶
securityManager 安全管理器,是shiro權(quán)限控制核心對象拾氓,在編程時冯挎,只需要操作Subject方法,
底層調(diào)用SecurityManager方法咙鞍,無需直接編程操作SecurityManager
Realm應(yīng)用程序和安全數(shù)據(jù)之間的連接器房官,應(yīng)用程序 進行權(quán)限控制讀取安全數(shù)據(jù)(數(shù)據(jù)表、文件续滋、網(wǎng)絡(luò)翰守。。疲酌。)

關(guān)于粗粒度的權(quán)限控制配置的認(rèn)識:

思路蜡峰,首先是在web.xml中配置shiroFilter <filter>|<filtername>shiroFilter<filter-class>org.springframework.web.filter.DelegatingFilterProxy<filtermapping>|<filtername>shiroFilter<url-pattern>/*
然后為了單獨區(qū)分出shiro的配置文件,可以在spring原有的applicationContext.xml中配置一下,配置引入方式<import resource="applicationContext-shiro.xml">,接著在同級目錄下面創(chuàng)建applicationContext-shiro.xml文件在里面配置beans后朗恳,加上<bean id="shiroFilter"class="org.apache.shiro.web.shiroFilterFactoryBean">主要為了產(chǎn)生shirofilter 相關(guān)代碼塊湿颅,及其說明:

  <bean id="shiroFilter" class=org.apache.shiro.spring.web.shiroFilterFactoryBean>
           <!-- 安全管理器-->
           <property name="securityManager" ref="securityManager">
           <!-- 未認(rèn)證,跳轉(zhuǎn)到那個界面 -->
           <property name="loginUrl" value="/login.html"/>
           <!-- 成功登錄之后的界面
           <property name="successUrl" value="/index.html"/>
           <!-- 認(rèn)證后粥诫,沒有權(quán)限跳轉(zhuǎn)頁面 -->
           <property name="unauthorizedUrl" value="/unauthorized.html">
           <!-- shiro URL控制過濾器規(guī)則>
           <property name="filterChainDefinitions">
               <value>
                   /login.html* =anon     --后面加*主要是考慮到可能帶有參數(shù)
                   /css/** =anon         --兩顆星號(**)代表當(dāng)前目錄或子目錄下
                   /js/** =anon
                   /images/** =anon
                   /** =authc     --除上面的情況其他資源都需要認(rèn)證后才能訪問
               </value>    
           </property>     
<bean>  
<!--配置安全管理器 -->
<bean id="securityManager" class="org.apache.shiro.web.mgt.defaultWebSecurityManager"><bean>
<!-- 后續(xù)處理器(主要是shiro的環(huán)境做一些后續(xù)處理)-->
<bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor">

-- 參數(shù)含義
anon :未認(rèn)證可以訪問*
authc :認(rèn)證后可以訪問*
perms :需要特定的權(quán)限才能訪問*
roles :需要特定的角色才能訪問*
user : 需要特定的用戶才能訪問*
port : 需要特定的端口才能訪問
reset :根據(jù)指定HTTP請求訪問才能訪問

關(guān)于權(quán)限相關(guān)表的創(chuàng)建思路:

首先能確定的實體:用戶油航、角色、權(quán)限
用戶: 系統(tǒng)登錄用戶 User
權(quán)限: 描述權(quán)限信息(粗粒度權(quán)限控制怀浆,可能在權(quán)限表描述訪問URL信息)permission
角色: 方便用戶進行授權(quán)谊囚,角色就是權(quán)限的集合

E-R關(guān)系:

用戶 n---m 角色 n---m 權(quán)限 ==》建立5張表

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末怕享,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子秒啦,更是在濱河造成了極大的恐慌熬粗,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,080評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件余境,死亡現(xiàn)場離奇詭異驻呐,居然都是意外死亡,警方通過查閱死者的電腦和手機芳来,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,422評論 3 385
  • 文/潘曉璐 我一進店門含末,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人即舌,你說我怎么就攤上這事佣盒。” “怎么了顽聂?”我有些...
    開封第一講書人閱讀 157,630評論 0 348
  • 文/不壞的土叔 我叫張陵肥惭,是天一觀的道長。 經(jīng)常有香客問我紊搪,道長蜜葱,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,554評論 1 284
  • 正文 為了忘掉前任耀石,我火速辦了婚禮牵囤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘滞伟。我一直安慰自己揭鳞,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,662評論 6 386
  • 文/花漫 我一把揭開白布梆奈。 她就那樣靜靜地躺著野崇,像睡著了一般。 火紅的嫁衣襯著肌膚如雪亩钟。 梳的紋絲不亂的頭發(fā)上舞骆,一...
    開封第一講書人閱讀 49,856評論 1 290
  • 那天,我揣著相機與錄音径荔,去河邊找鬼督禽。 笑死,一個胖子當(dāng)著我的面吹牛总处,可吹牛的內(nèi)容都是我干的狈惫。 我是一名探鬼主播,決...
    沈念sama閱讀 39,014評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼胧谈!你這毒婦竟也來了忆肾?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,752評論 0 268
  • 序言:老撾萬榮一對情侶失蹤菱肖,失蹤者是張志新(化名)和其女友劉穎客冈,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體稳强,經(jīng)...
    沈念sama閱讀 44,212評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡场仲,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,541評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了退疫。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片渠缕。...
    茶點故事閱讀 38,687評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖褒繁,靈堂內(nèi)的尸體忽然破棺而出亦鳞,到底是詐尸還是另有隱情,我是刑警寧澤棒坏,帶...
    沈念sama閱讀 34,347評論 4 331
  • 正文 年R本政府宣布燕差,位于F島的核電站,受9級特大地震影響坝冕,放射性物質(zhì)發(fā)生泄漏徒探。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,973評論 3 315
  • 文/蒙蒙 一徽诲、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧吵血,春花似錦谎替、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,777評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至侦另,卻和暖如春秩命,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背褒傅。 一陣腳步聲響...
    開封第一講書人閱讀 32,006評論 1 266
  • 我被黑心中介騙來泰國打工弃锐, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人殿托。 一個月前我還...
    沈念sama閱讀 46,406評論 2 360
  • 正文 我出身青樓霹菊,卻偏偏與公主長得像,于是被迫代替她去往敵國和親支竹。 傳聞我的和親對象是個殘疾皇子旋廷,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,576評論 2 349

推薦閱讀更多精彩內(nèi)容

  • 1.簡介 Apache Shiro是Java的一個安全框架鸠按。功能強大,使用簡單的Java安全框架饶碘,它為開發(fā)人員提供...
    H_Man閱讀 3,158評論 4 48
  • 你的第一個Apache Shiro應(yīng)用 如果你是第一次接觸Apache Shiro目尖,這個簡短的教程將向你展示如何創(chuàng)...
    倔強的小亮閱讀 6,395評論 1 32
  • 前言 Spring boot 是什么,網(wǎng)上的很多介紹扎运,這里博客就不多介紹了瑟曲。如果不明白Spring boot是什么...
    xuezhijian閱讀 17,901評論 13 39
  • 構(gòu)建一個互聯(lián)網(wǎng)應(yīng)用,權(quán)限校驗管理是很重要的安全措施绪囱,這其中主要包含: 認(rèn)證 - 用戶身份識別测蹲,即登錄 授權(quán) - 訪...
    zhuke閱讀 3,495評論 0 30
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)鬼吵,斷路器扣甲,智...
    卡卡羅2017閱讀 134,633評論 18 139