摘要:我認(rèn)為無(wú)論是也好,還是其他安全框架也好,其功能主要就分為三部分認(rèn)證授權(quán)加密。的認(rèn)證授權(quán)管理,都需要由負(fù)責(zé)。構(gòu)建環(huán)境主體提交認(rèn)證請(qǐng)求認(rèn)證創(chuàng)建環(huán)境,我們這里使用的是。最后我們使用進(jìn)行認(rèn)證。認(rèn)證我們先說(shuō)這么多,下節(jié)我們來(lái)說(shuō)說(shuō)的簡(jiǎn)單授權(quán)。
時(shí)隔這么久終于有時(shí)間更新了,今天和大家分享一下Shiro的原理。我認(rèn)為無(wú)論是Shiro也好,還是其他安全框架也好,其功能主要就分為三部分:認(rèn)證、授權(quán)、加密。下面我們來(lái)詳細(xì)說(shuō)明Shiro具體是如何實(shí)現(xiàn)的。Shiro結(jié)構(gòu)圖
講原理當(dāng)然離不開(kāi)結(jié)構(gòu)圖,我們先來(lái)看一下Shiro的整體結(jié)構(gòu)。
由Shiro的結(jié)構(gòu)圖我們可以看出Shiro的核心就是Security Manager。Shiro的認(rèn)證、授權(quán)、Session管理,都需要由Security Manager負(fù)責(zé)。
Shiro認(rèn)證下面我們用一個(gè)小例子來(lái)了解一下Shiro 的簡(jiǎn)單用法。
public class HelloShiro { SimpleAccountRealm realm = new SimpleAccountRealm(); @Before public void addUser() { realm.addAccount("Mark", "123456"); } @Test public void testSimlpeRealm() { // 1.構(gòu)建securityManager環(huán)境 DefaultSecurityManager securityManager = new DefaultSecurityManager(); securityManager.setRealm(realm); // 2.主體提交認(rèn)證請(qǐng)求 SecurityUtils.setSecurityManager(securityManager); Subject subject = SecurityUtils.getSubject(); AuthenticationToken token = new UsernamePasswordToken("Mark", "123456"); // 3. 認(rèn)證 subject.login(token); System.out.println(subject.isAuthenticated()); } }
創(chuàng)建securityManager環(huán)境,我們這里使用的是DefaultSecurityManager。
設(shè)置Realm,Realm主要主要負(fù)責(zé)Subject的認(rèn)證和授權(quán)。其中最重要的兩個(gè)方法是doGetAuthenticationInfo和doGetAuthorizationInfo,這也是我們整個(gè)權(quán)限管理的最重要的一部分,由于這里我們只是一個(gè)入門(mén)程序,我們就使用Shiro定義好的SimpleAccountRealm作為演示,后面我們還會(huì)說(shuō)到JdbcRealm和自定義Realm。
通過(guò)SecurityUtils設(shè)置securityManager和獲取subject;
創(chuàng)建需要認(rèn)證的token信息,這是我們自己創(chuàng)建一個(gè)UsernamePasswordToken來(lái)模擬獲取用戶從前臺(tái)登陸的賬號(hào)密碼。
最后我們使用subject.login(token);進(jìn)行認(rèn)證。若tonken中的賬號(hào)密碼和我們addUser()添加的相同則測(cè)試通過(guò),否則則會(huì)拋出異常。
Shiro認(rèn)證我們先說(shuō)這么多,下節(jié)我們來(lái)說(shuō)說(shuō)Shiro的簡(jiǎn)單授權(quán)。如果大家有好的意見(jiàn)和建議請(qǐng)?jiān)谠u(píng)論區(qū)留言,謝謝大家。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/69170.html
摘要:為了達(dá)到很好的效果,我們使用來(lái)對(duì)的緩存進(jìn)行管理配置會(huì)話管理器,對(duì)會(huì)話時(shí)間進(jìn)行控制手動(dòng)清空緩存由于驗(yàn)證用戶名和密碼之前,一般需要驗(yàn)證驗(yàn)證碼的。 前言 本文主要講解的知識(shí)點(diǎn)有以下: Shiro授權(quán)過(guò)濾器使用 Shiro緩存 與Ehcache整合 Shiro應(yīng)用->實(shí)現(xiàn)驗(yàn)證碼功能 記住我功能 一、授權(quán)過(guò)濾器測(cè)試 我們的授權(quán)過(guò)濾器使用的是permissionsAuthorization...
摘要:細(xì)粒度權(quán)限管理就是數(shù)據(jù)級(jí)別的權(quán)限管理。張三只能查看行政部的用戶信息,李四只能查看開(kāi)發(fā)部門(mén)的用戶信息。比如通過(guò)的攔截器實(shí)現(xiàn)授權(quán)。 前言 本文主要講解的知識(shí)點(diǎn)有以下: 權(quán)限管理的基礎(chǔ)知識(shí) 模型 粗粒度和細(xì)粒度的概念 回顧URL攔截的實(shí)現(xiàn) Shiro的介紹與簡(jiǎn)單入門(mén) 一、Shiro基礎(chǔ)知識(shí) 在學(xué)習(xí)Shiro這個(gè)框架之前,首先我們要先了解Shiro需要的基礎(chǔ)知識(shí):權(quán)限管理 1.1什...
摘要:表示對(duì)用戶資源進(jìn)行操作,相當(dāng)于,對(duì)所有用戶資源實(shí)例進(jìn)行操作。與整合,實(shí)際上的操作都是通過(guò)過(guò)濾器來(lái)干的。將安全管理器交由工廠來(lái)進(jìn)行管理。在過(guò)濾器鏈中設(shè)置靜態(tài)資源不攔截。 前言 本文主要講解的知識(shí)點(diǎn)有以下: Shiro授權(quán)的方式簡(jiǎn)單介紹 與Spring整合 初始Shiro過(guò)濾器 一、Shiro授權(quán) 上一篇我們已經(jīng)講解了Shiro的認(rèn)證相關(guān)的知識(shí)了,現(xiàn)在我們來(lái)弄Shiro的授權(quán) Shir...
摘要:框架具有輕便,開(kāi)源的優(yōu)點(diǎn),所以本譯見(jiàn)構(gòu)建用戶管理微服務(wù)五使用令牌和來(lái)實(shí)現(xiàn)身份驗(yàn)證往期譯見(jiàn)系列文章在賬號(hào)分享中持續(xù)連載,敬請(qǐng)查看在往期譯見(jiàn)系列的文章中,我們已經(jīng)建立了業(yè)務(wù)邏輯數(shù)據(jù)訪問(wèn)層和前端控制器但是忽略了對(duì)身份進(jìn)行驗(yàn)證。 重拾后端之Spring Boot(四):使用JWT和Spring Security保護(hù)REST API 重拾后端之Spring Boot(一):REST API的搭建...
摘要:框架提供的接口,是的核心,代表安全管理器對(duì)象??梢蚤_(kāi)發(fā)人員編寫(xiě),框架也提供一些。在中作為應(yīng)用程序和安全數(shù)據(jù)之間的橋梁或連接器。例如要求中必須同時(shí)含有和的權(quán)限才能執(zhí)行方法。 apache shiro框架簡(jiǎn)介 Apache Shiro是一個(gè)強(qiáng)大而靈活的開(kāi)源安全框架,它能夠干凈利落地處理身份認(rèn)證,授權(quán),企業(yè)會(huì)話管理和加密?,F(xiàn)在,使用Apache Shiro的人越來(lái)越多,因?yàn)樗喈?dāng)簡(jiǎn)單,相比比Sp...
閱讀 1697·2023-04-26 01:54
閱讀 1707·2021-09-30 09:55
閱讀 2727·2021-09-22 16:05
閱讀 1957·2021-07-25 21:37
閱讀 2699·2019-08-29 18:45
閱讀 1953·2019-08-29 16:44
閱讀 1956·2019-08-29 12:34
閱讀 1415·2019-08-23 14:02