无码人妻丰满熟妇奶水区码,麻豆一区区三,亚洲日韩欧美精品综合,亚洲无码地址

學(xué)習(xí)shiro認(rèn)證授權(quán)?看這一篇就夠了!史上最傻瓜式兒用法講解?。╯hiro如何實(shí)現(xiàn)認(rèn)證和授權(quán))

寫(xiě)在前面

什么事Shiro?

Shiro是一個(gè)強(qiáng)大易用的Java安全框架,用在身份驗(yàn)證、授權(quán)、密碼學(xué)和會(huì)話管理。有了Shiro易于理解的API,我們可以快速、輕松地獲得任何應(yīng)用程序,從小的移動(dòng)應(yīng)用程序到大的網(wǎng)絡(luò)甚至企業(yè)應(yīng)用程序都是可以的。

Shiro的主要框架圖:

學(xué)習(xí)shiro認(rèn)證授權(quán)?看這一篇就夠了!史上最傻瓜式兒用法講解?。╯hiro如何實(shí)現(xiàn)認(rèn)證和授權(quán))

走進(jìn)shiro

Subject是主體,外部應(yīng)用與subject進(jìn)行交互,subject則會(huì)記錄當(dāng)前操作用戶,將用戶的概念理解為當(dāng)前操作的主體,可以是一個(gè)通過(guò)瀏覽器請(qǐng)求的用戶,也可以是一個(gè)運(yùn)行的程序。 Subject在shiro中是一個(gè)接口,接口中定義了很多認(rèn)證授相關(guān)的方法,外部程序通過(guò)subject進(jìn)行認(rèn)證授權(quán),而subject是通過(guò)SecurityManager安全管理器進(jìn)行認(rèn)證授權(quán)的。

SecurityManager

SecurityManager是安全管理器,對(duì)全部的subject進(jìn)行安全管理,它是shiro的核心,負(fù)責(zé)對(duì)所有的subject進(jìn)行安全管理。通過(guò)SecurityManager可以完成subject的認(rèn)證、授權(quán)等,實(shí)質(zhì)上SecurityManager是通過(guò)Authenticator進(jìn)行認(rèn)證,通過(guò)Authorizer進(jìn)行授權(quán),通過(guò)sessionManager進(jìn)行會(huì)話管理等。

SecurityManager是一個(gè)接口,同時(shí)它自身也繼承了Authenticator, Authorizer, SessionManager這三個(gè)接口。

學(xué)習(xí)shiro認(rèn)證授權(quán)?看這一篇就夠了!史上最傻瓜式兒用法講解!(shiro如何實(shí)現(xiàn)認(rèn)證和授權(quán))

Authorizer

Authorizer是授權(quán)器,用戶通過(guò)認(rèn)證器認(rèn)證通過(guò),在訪問(wèn)功能時(shí)需要通過(guò)授權(quán)器判斷用戶是否有此功能的操作權(quán)限。

Authenticator

Authenticator是認(rèn)證器,可以對(duì)用戶身份進(jìn)行認(rèn)證,Authenticator是一個(gè)接口,shiro提供ModularRealmAuthenticator實(shí)現(xiàn)類(lèi),通過(guò)ModularRealmAuthenticator基本上可以滿足大多數(shù)需求,也可以自定義認(rèn)證器。

realm

Realm是領(lǐng)域,相當(dāng)于datasource數(shù)據(jù)源,securityManager進(jìn)行安全認(rèn)證需要通過(guò)Realm獲取用戶權(quán)限數(shù)據(jù),比如:如果用戶身份數(shù)據(jù)在數(shù)據(jù)庫(kù)那么realm就需要從數(shù)據(jù)庫(kù)獲取用戶身份信息。

說(shuō)明:

不要將realm理解成單單從數(shù)據(jù)源取數(shù)據(jù),在realm中還有認(rèn)證授權(quán)校驗(yàn)相關(guān)的代碼。

SessionDAO

SessionDAO是會(huì)話dao層,是對(duì)session會(huì)話操作的一套接口,比如要將session存儲(chǔ)到數(shù)據(jù)庫(kù),可以通過(guò)jdbc將會(huì)話存儲(chǔ)到數(shù)據(jù)庫(kù)。

sessionManager

sessionManager是會(huì)話管理,shiro框架定義了一套會(huì)話管理,它不依賴web容器的session,所以shiro可以使用在非web應(yīng)用上,也可以將分布式應(yīng)用的會(huì)話集中在一點(diǎn)管理,此特性可使它成為單點(diǎn)登錄的利器。

Cryptography

Cryptography是密碼管理,shiro提供了一套加密/解密的組件,方便開(kāi)發(fā)。比如提供常用的散列、加/解密等功能。

CacheManager

CacheManager是緩存管理,將用戶權(quán)限數(shù)據(jù)存儲(chǔ)在緩存,這樣可以提高性能。


shiro認(rèn)證與授權(quán)的具體實(shí)現(xiàn)

學(xué)習(xí)shiro認(rèn)證授權(quán)?看這一篇就夠了!史上最傻瓜式兒用法講解!(shiro如何實(shí)現(xiàn)認(rèn)證和授權(quán))

第一步:添加jar包

<!– shiro –> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-core</artifactId> <version>1.4.0</version> </dependency> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring</artifactId> <version>1.4.0</version> </dependency>

第二步:配置web.xml

<filter> <filter-name>shiroFilter</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> <!– 設(shè)置true由servlet容器控制filter的生命周期 –> <init-param> <param-name>targetFilterLifecycle</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>shiroFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>

第三步:自定義Realm 繼承AuthorizingRealm 重寫(xiě) AuthorizationInfo(授權(quán)) 和 AuthenticationInfo(認(rèn)證)

簡(jiǎn)單的測(cè)試 根據(jù)個(gè)人的設(shè)置和需求改變的?,F(xiàn)在數(shù)據(jù)是死的,運(yùn)用的時(shí)候需要從數(shù)據(jù)庫(kù)中得到

/** * @author IT講壇 * @date 2018/12/26 14:05 */public class CustomRealm extends AuthorizingRealm { /** * 授權(quán) * @param principalCollection * @return */ @Override protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) { String userName = (String) principalCollection.getPrimaryPrincipal(); List<String> permissionList=new ArrayList<String>(); permissionList.add(\”user:add\”); permissionList.add(\”user:delete\”); if (userName.equals(\”zhou\”)) { permissionList.add(\”user:query\”); } SimpleAuthorizationInfo info=new SimpleAuthorizationInfo(); info.addStringPermissions(permissionList); info.addRole(\”admin\”); return info; } /** * 認(rèn)證 * @param authenticationToken * @return * @throws AuthenticationException */ @Override protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException { String userName = (String) authenticationToken.getPrincipal(); if (\”\”.equals(userName)) { return null; } SimpleAuthenticationInfo info = new SimpleAuthenticationInfo(userName,\”123456\”,this.getName()); return info; }}

第四步:配置spring-shiro.xml

<?xml version=\”1.0\” encoding=\”UTF-8\”?><beans xmlns=\”http://www.springframework.org/schema/beans\” xmlns:xsi=\”http://www.w3.org/2001/XMLSchema-instance\” xsi:schemaLocation=\”http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd\”> <!–開(kāi)啟shiro的注解–> <bean id=\”advisorAutoProxyCreator\” class=\”org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator\”> <property name=\”proxyTargetClass\” value=\”true\”></property> </bean> <bean class=\”org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor\”/> <!–注入自定義的Realm–> <bean id=\”customRealm\” class=\”com.test.realm.CustomRealm\”></bean> <bean id=\”securityManager\” class=\”org.apache.shiro.web.mgt.DefaultWebSecurityManager\”> <property name=\”realm\” ref=\”customRealm\”></property> </bean> <!–配置ShiroFilter–> <bean id=\”shiroFilter\” class=\”org.apache.shiro.spring.web.ShiroFilterFactoryBean\”> <property name=\”securityManager\” ref=\”securityManager\”></property> <!–登入頁(yè)面–> <property name=\”loginUrl\” value=\”/login.jsp\”></property> <!–登入成功頁(yè)面–> <property name=\”successUrl\” value=\”/index.jsp\”/> <property name=\”filters\”> <map> <!–退出過(guò)濾器–> <entry key=\”logout\” value-ref=\”logoutFilter\” /> </map> </property> <!–URL的攔截–> <property name=\”filterChainDefinitions\” > <value> /share = authc /logout = logout </value> </property> </bean> <!–自定義退出LogoutFilter–> <bean id=\”logoutFilter\” class=\”com.test.filter.SystemLogoutFilter\”> <property name=\”redirectUrl\” value=\”/login\”/> </bean></beans>

說(shuō)明:

securityManager: 這個(gè)屬性是必須的。

loginUrl: 沒(méi)有登錄的用戶請(qǐng)求需要登錄的頁(yè)面時(shí)自動(dòng)跳轉(zhuǎn)到登錄頁(yè)面,不是必須的屬性,不輸入地址的話會(huì)自動(dòng)尋找項(xiàng)目web項(xiàng)目的根目錄下的”/login.jsp”頁(yè)面。

successUrl: 登錄成功默認(rèn)跳轉(zhuǎn)頁(yè)面,不配置則跳轉(zhuǎn)至”/”。如果登陸前點(diǎn)擊的一個(gè)需要登錄的頁(yè)面,則在登錄自動(dòng)跳轉(zhuǎn)到那個(gè)需要登錄的頁(yè)面。不跳轉(zhuǎn)到此。

unauthorizedUrl: 沒(méi)有權(quán)限默認(rèn)跳轉(zhuǎn)的頁(yè)面。

Shiro中默認(rèn)的過(guò)濾器:

學(xué)習(xí)shiro認(rèn)證授權(quán)?看這一篇就夠了!史上最傻瓜式兒用法講解!(shiro如何實(shí)現(xiàn)認(rèn)證和授權(quán))

在spring中直接引入<import resource=\”spring-shiro.xml\”></import>

第五步:在spring-mvc.xml中配置權(quán)限的控制 異常的跳轉(zhuǎn)

<bean class=\”org.springframework.web.servlet.handler.SimpleMappingExceptionResolver\”> <property name=\”exceptionMappings\”> <props> <!–表示捕獲的異常 –> <prop key=\”org.apache.shiro.authz.UnauthorizedException\”> <!–捕獲該異常時(shí)跳轉(zhuǎn)的路徑 –> /403 </prop> <!–表示捕獲的異常 –> <prop key=\”org.apache.shiro.authz.UnauthenticatedException\”> <!–捕獲該異常時(shí)跳轉(zhuǎn)的路徑 –> /403 </prop> </props> </property> </bean>

寫(xiě)在文末

最后給小伙伴們舉幾個(gè)配置實(shí)例

/admin=authc,roles[admin] 表示用戶必需已通過(guò)認(rèn)證,并擁有admin角色才可以正常發(fā)起’/admin’請(qǐng)求

/edit=authc,perms[admin:edit] 表示用戶必需已通過(guò)認(rèn)證,并擁有admin:edit權(quán)限才可以正常發(fā)起’/edit’請(qǐng)求

/home=user 表示用戶不一定需要已經(jīng)通過(guò)認(rèn)證,只需要曾經(jīng)被Shiro記住過(guò)登錄狀態(tài)就可以正常發(fā)起’/home’請(qǐng)求

歡迎大家多多關(guān)注,評(píng)論留言區(qū)多多互動(dòng),交流學(xué)習(xí)心得。

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。

(0)
上一篇 2022年8月25日 上午10:31
下一篇 2022年8月25日 上午10:45

相關(guān)推薦

  • 項(xiàng)目管理工具網(wǎng)站

    項(xiàng)目管理工具網(wǎng)站: 讓項(xiàng)目管理工作變得高效 隨著數(shù)字化時(shí)代的到來(lái),項(xiàng)目管理已經(jīng)成為了現(xiàn)代企業(yè)必不可少的一部分。而項(xiàng)目管理工具網(wǎng)站則是實(shí)現(xiàn)項(xiàng)目管理的重要平臺(tái)。一個(gè)好的項(xiàng)目管理工具網(wǎng)站…

    科研百科 2024年7月28日
    2
  • 項(xiàng)目融資系統(tǒng)風(fēng)險(xiǎn)的管理

    項(xiàng)目融資系統(tǒng)風(fēng)險(xiǎn)的管理 隨著現(xiàn)代經(jīng)濟(jì)的不斷發(fā)展,項(xiàng)目融資作為一種新型的融資方式得到了越來(lái)越多的關(guān)注和應(yīng)用。然而,項(xiàng)目融資系統(tǒng)風(fēng)險(xiǎn)也是一種常見(jiàn)的風(fēng)險(xiǎn),如果不加以有效管理,可能會(huì)對(duì)項(xiàng)目…

    科研百科 2025年1月23日
    7
  • 安裝工程項(xiàng)目管理軟件

    安裝工程項(xiàng)目管理軟件 隨著現(xiàn)代工程越來(lái)越復(fù)雜和數(shù)字化,安裝工程項(xiàng)目管理軟件成為了項(xiàng)目成功的關(guān)鍵之一。一個(gè)好的軟件可以幫助項(xiàng)目經(jīng)理更好地管理項(xiàng)目進(jìn)度,資源,質(zhì)量和成本,從而提高效率,…

    科研百科 2024年7月27日
    3
  • 盤(pán)錦市公安局劉威作

    盤(pán)錦市公安局劉威:守護(hù)一方平安的警察先驅(qū) 盤(pán)錦市位于遼寧省東北部,是一個(gè)歷史悠久、文化底蘊(yùn)深厚的城市。在這里,每天都有無(wú)數(shù)的故事發(fā)生,而其中,警察蜀黎們則是最為不可或缺的一部分。他…

    科研百科 2024年10月10日
    16
  • 把控項(xiàng)目進(jìn)度

    把控項(xiàng)目進(jìn)度是項(xiàng)目管理中至關(guān)重要的一環(huán)。項(xiàng)目進(jìn)度的把控不僅能夠確保項(xiàng)目按時(shí)完成,還能夠降低項(xiàng)目風(fēng)險(xiǎn),提高項(xiàng)目質(zhì)量和客戶滿意度。在這篇文章中,我們將探討如何把控項(xiàng)目進(jìn)度,并提出一些實(shí)…

    科研百科 2024年8月19日
    3
  • 平頂山湛河區(qū):以“項(xiàng)目化+契約化”推動(dòng)基層黨建新融合

    近日,在平頂山市湛河區(qū)姚孟街道陽(yáng)光苑社區(qū),紅馬甲志愿者服務(wù)隊(duì)正忙著為居民提供免費(fèi)理發(fā)、健康咨詢、法律咨詢等10余項(xiàng)貼近民生的社區(qū)服務(wù)項(xiàng)目。 去年以來(lái),該社區(qū)黨組織通過(guò)“項(xiàng)目化 契約…

    科研百科 2022年12月31日
    321
  • 施工進(jìn)度計(jì)劃 軟件

    施工進(jìn)度計(jì)劃軟件 隨著工程的不斷進(jìn)展,施工進(jìn)度計(jì)劃已經(jīng)成為了項(xiàng)目管理中不可或缺的一部分。施工進(jìn)度計(jì)劃軟件是一種能夠幫助項(xiàng)目經(jīng)理和工程師制定、跟蹤和控制施工進(jìn)度的工具,可以提供實(shí)時(shí)的…

    科研百科 2024年5月24日
    42
  • 因承諾保本保收益等違規(guī)行為 萬(wàn)鼎國(guó)際被撤銷(xiāo)管理人登記(承諾保本保收益處罰)

    北京商報(bào)訊(記者 劉宇陽(yáng))8月4日,中基協(xié)發(fā)布紀(jì)律處分決定書(shū)顯示,經(jīng)查,萬(wàn)鼎國(guó)際股權(quán)投資基金管理(北京)有限公司(以下簡(jiǎn)稱(chēng)“萬(wàn)鼎國(guó)際”)存在5項(xiàng)違規(guī)事實(shí),包括未按規(guī)定備案私募基金;…

    科研百科 2022年8月25日
    542
  • nodered 企業(yè)微信

    企業(yè)微信——連接企業(yè)與用戶的新方式 近年來(lái),隨著移動(dòng)互聯(lián)網(wǎng)的快速發(fā)展,企業(yè)微信成為了越來(lái)越多企業(yè)用于與客戶溝通的重要工具。作為一種新型的社交媒體平臺(tái),企業(yè)微信不僅為企業(yè)提供了一種全…

    科研百科 2024年10月16日
    1
  • msmraid管理軟件

    msmraid 管理軟件 msmraid 管理軟件是一款功能強(qiáng)大的軟件,用于管理mdadm架構(gòu)的raid0、raid1、raid10、raid5等存儲(chǔ)設(shè)備。它提供了多種功能和選項(xiàng),…

    科研百科 2024年11月6日
    3
国内精品400部激情在线| 亚洲欧美日韩黑人黄片精品| 国产后入视频91| 自拍偷拍首页综合av| 91午夜福利一区| 国产亚洲国一区| 亚洲诱奸在线| caopornm超碰| 精品久久一次会所| 骚女一区二区三区四区| 国产一级黄色自拍| 久久久亚洲AVAV| 在线播放大鸡巴在屄里| 性性国产欧洲在线观看| 日韩中文字幕免费不卡在线| 久久久久国产一区无码| 欧美日韩综合不卡一区二区| 国产美女视频网站一区| 成人视频在线久久91| 欧美视频第一区68页| 亚洲日韩肛交| 久久乱码综合字幕一区二区三区| 亚洲AV午夜福利一区| 日本蜜芽久久| av夭堂亚久久| 亚洲无码VS综合图片| 欧洲精品在线高清| 婷婷六月激情五月| 亚洲图在线一区| 三级区精品久久久三级区| caoporn超碰国产一区的| 日本欧美产无码久久久久又大又粗| 大鸡巴操骚逼18p| 日韩精品一线二线三线视频| 国产人妖无码专区| 国产免费av婷婷| 日韩福利av| www.中文字幕人妻| 人妻午夜福利短片| 熟女性久久| 亚洲黄色片久久久久久久久久|