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

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

寫在前面

什么事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)類,通過(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提供了一套加密/解密的組件,方便開發(fā)。比如提供常用的散列、加/解密等功能。

CacheManager

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


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

學(xué)習(xí)shiro認(rèn)證授權(quán)?看這一篇就夠了!史上最傻瓜式兒用法講解?。╯hiro如何實(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 重寫 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\”> <!–開啟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)?看這一篇就夠了!史上最傻瓜式兒用法講解?。╯hiro如何實(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>

寫在文末

最后給小伙伴們舉幾個(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)目管理軟件發(fā)展

    項(xiàng)目管理軟件的發(fā)展 隨著信息技術(shù)的不斷發(fā)展,項(xiàng)目管理軟件也在不斷進(jìn)化和演變。從簡(jiǎn)單的任務(wù)跟蹤工具到高度定制的集成化軟件,項(xiàng)目管理軟件已經(jīng)成為企業(yè)項(xiàng)目管理中不可或缺的工具。本文將探討…

    科研百科 2024年7月28日
    5
  • 精益化項(xiàng)目申報(bào)

    精益化項(xiàng)目申報(bào):推動(dòng)企業(yè)創(chuàng)新和改進(jìn) 隨著市場(chǎng)競(jìng)爭(zhēng)的加劇和企業(yè)客戶需求的不斷變化,企業(yè)需要不斷地進(jìn)行創(chuàng)新和改進(jìn),以保持競(jìng)爭(zhēng)優(yōu)勢(shì)。而精益化項(xiàng)目申報(bào)則是實(shí)現(xiàn)這一目標(biāo)的有效途徑之一。 精益…

    科研百科 2024年11月27日
    6
  • 5款超好用的拼圖軟件分享,靈活拼接,操作簡(jiǎn)單(5款超好用的拼圖軟件分享,靈活拼接,操作簡(jiǎn)單又好用)

    在日常生活中,我們經(jīng)常會(huì)需要將多張圖片拼接起來(lái),這樣可以達(dá)到更豐富的效果,美觀度上也會(huì)有所提高,下面來(lái)分享5款操作簡(jiǎn)單的拼圖軟件,模版超豐富,靈活拼接圖片! 一、迅捷拼圖助手 專業(yè)…

    科研百科 2023年5月6日
    370
  • PSQCD

    PSQCD:什么是PSQCD? PSQCD是一種基于Python的開源數(shù)據(jù)科學(xué)框架,它允許用戶使用Python編寫數(shù)據(jù)可視化和數(shù)據(jù)分析工具。PSQCD提供了許多強(qiáng)大的功能,包括數(shù)據(jù)…

    科研百科 2024年9月30日
    23
  • 項(xiàng)目管理 收費(fèi)

    項(xiàng)目管理在現(xiàn)代商業(yè)中變得越來(lái)越重要,因?yàn)樵絹?lái)越多的公司和組織需要高效地管理他們的項(xiàng)目,并確保項(xiàng)目按時(shí)完成。然而,隨著項(xiàng)目管理技術(shù)的不斷發(fā)展,項(xiàng)目管理的成本也在不斷增加。在這種情況下…

    科研百科 2024年5月25日
    49
  • 科研項(xiàng)目來(lái)源分為兩類怎么寫科研項(xiàng)目來(lái)源分為兩類怎么寫

    科研項(xiàng)目來(lái)源通常分為兩大類:開源項(xiàng)目和私有項(xiàng)目。開源項(xiàng)目是指由其他開發(fā)者或組織創(chuàng)建和維護(hù)的代碼庫(kù)或軟件項(xiàng)目,這些項(xiàng)目可以在任何時(shí)間和地點(diǎn)進(jìn)行訪問(wèn)和修改。私有項(xiàng)目則是指由特定組織或個(gè)…

    科研百科 2024年9月9日
    4
  • 酒鋼協(xié)同辦公平臺(tái)

    酒鋼協(xié)同辦公平臺(tái):推動(dòng)酒鋼高效協(xié)同的利器 隨著酒鋼公司的規(guī)模不斷增大,協(xié)同辦公的需求也越來(lái)越高。為了更好地推動(dòng)公司協(xié)同工作,酒鋼公司開發(fā)了一套協(xié)同辦公平臺(tái),以下簡(jiǎn)稱“協(xié)同辦公平臺(tái)”…

    科研百科 2024年10月13日
    21
  • java實(shí)現(xiàn)銀行系統(tǒng)項(xiàng)目管理

    Java實(shí)現(xiàn)銀行系統(tǒng)項(xiàng)目管理 隨著信息技術(shù)的不斷發(fā)展,銀行系統(tǒng)已經(jīng)成為人們?nèi)粘I钪胁豢苫蛉钡囊徊糠?。但是,?duì)于一個(gè)大型銀行系統(tǒng)來(lái)說(shuō),項(xiàng)目管理是至關(guān)重要的。本文將介紹如何通過(guò)Jav…

    科研百科 2024年12月25日
    2
  • 音樂(lè)研究生科研項(xiàng)目怎么選

    音樂(lè)研究生科研項(xiàng)目怎么選 作為音樂(lè)研究生,選擇科研項(xiàng)目是非常重要的。選擇適合自己專業(yè)方向的科研項(xiàng)目,能夠?yàn)檠芯可A段的學(xué)習(xí)奠定堅(jiān)實(shí)的基礎(chǔ),同時(shí)也能夠?yàn)槲磥?lái)的職業(yè)發(fā)展提供有益的啟示。…

    科研百科 2024年8月12日
    3
  • 招標(biāo)管理平臺(tái)(招標(biāo)項(xiàng)目管理系統(tǒng))

    招標(biāo)項(xiàng)目管理系統(tǒng)招標(biāo)項(xiàng)目管理系統(tǒng)(簡(jiǎn)稱紅軍)近日,教育部辦公廳印發(fā)《關(guān)于實(shí)施全省實(shí)施全省實(shí)施全省統(tǒng)一義務(wù)教育適齡兒童入學(xué)政策的通知》,要求各單位根據(jù)《全國(guó)義務(wù)教育階段入學(xué)工作實(shí)施細(xì)…

    科研百科 2024年7月30日
    4
国产成片网| 浅仓彩音AV无删减在线播放| 夫妻自拍小视频在线| 成人激情免费av| 欧美 日韩 亚洲 一区二区| 全球五月激情网| 欧美日韩中综合网| 日本伦理中文字幕在线| 欧美黄色大片兔费| 看免费偷拍的黄片| 激情四色在线| 五月天婷婷做爱激情| 亚洲 欧洲 成人 在线 视频| 日韩区 无码| 日本插入 在线| 国产精久久久久久亚洲美女高潮_欧| 大香蕉国产精品在线播放| 黑人大鸡巴 欧美大战 插入 爽 | 美女麻豆AV操| AV天天天天天天天在线| 麻豆91一区二区三区在线播放| 欧色图一区| 欧美精品自拍| 久久国产三级精品三级在线播放| 三级片自拍在线播放| 欧美成人精品A A A| 欧美老熟女一级| 久久久禁一区二区三区| 欧美亚洲盗摄一区二区三区| 91麻豆精品国产综合久久久久久| www.欧美日韩欧美| 久久久久真人精品| 久久 人人精品| 国产香蕉97碰碰久久人人观看评测| 丰满少妇大胆做| 激情五月天一区| 999av久久久| 五月婷婷网站| 韩国中文字幕久久35| 欧美日韩亚洲综合图片| 少妇人妻偷人精品一区二区|