-
源碼位置:https://gitee.com/ljl17625/shiro-spring/tree/master
查看全部 -
JdbcRealm 有默認(rèn)的查詢(xún)語(yǔ)句
查看全部 -
shiro授權(quán)
查看全部 -
Shiro認(rèn)證流程:
1:創(chuàng)建SecurityManager;
2: 主體提交認(rèn)證 ;
3:SecurityManager認(rèn)證;
4:SecurityManager是用Authenticator來(lái)認(rèn)證;
5:authenticator認(rèn)證是通過(guò)Realm獲取認(rèn)證數(shù)據(jù)做最終的認(rèn)證
查看全部 -
Shiro認(rèn)證
查看全部 -
Shiro也是通過(guò)Security Manager提供安全服務(wù)
Authenticator 認(rèn)證器 管理登入登出
Authorizer 授權(quán)器 賦予主體有哪些權(quán)限
Session Manager Shiro自己實(shí)現(xiàn)的session管理
Session Dao 對(duì)Session進(jìn)行增刪改查
Cache Manager? 緩存管理 可以緩存角色數(shù)據(jù)、權(quán)限數(shù)據(jù)
Realms ? shiro與數(shù)據(jù)庫(kù)的橋梁,
主體提交認(rèn)證信息到SecurityManager,SecurityManager調(diào)用Authenticator去做認(rèn)證,Authenticator獲取認(rèn)證信息是通過(guò)realms訪問(wèn)數(shù)據(jù)庫(kù),讓客戶提交信息與realms提供的信息做匹配。
同樣的 Authorizer也是通過(guò)調(diào)用realms獲取權(quán)限的。
cryptography 安全加密
查看全部 -
spring整合shiro
?
1.創(chuàng)建項(xiàng)目
2.導(dǎo)入依賴(lài)(spring、shiro、springmvc、spring-shiro、shiro-web)
3.創(chuàng)建web.xml(配置前端控制器、過(guò)濾器、加載初始化springmvc.xml、加載spring.xml、post請(qǐng)求亂碼)
4.創(chuàng)建springmvc.xml(配置上下文掃描,配置mvc的處理器適配器、處理器適配器,配置靜態(tài)文件掃描)
5.創(chuàng)建spring.xml(加到容器中:shiroFilter,創(chuàng)建SecurityMananger對(duì)象并設(shè)置自定義Realm,定義自定義的Realm,設(shè)置加密的算法)
6.創(chuàng)建login.html (表單賬號(hào)、密碼提交到UserController)
7.自定義Realm
8.創(chuàng)建UserController(接受前臺(tái)數(shù)據(jù),進(jìn)行shiro登錄驗(yàn)證,如果成功返回成功,打印錯(cuò)誤)?
查看全部 -
? ? ? ? ? ?自定義IniRealm
在src/main/resources中創(chuàng)建user.ini
內(nèi)容為:
[users]
Mark1=123,admin? ? ?admin是role
[roles]
admin=user:delete? ? ? ?擁有刪除用戶的權(quán)限
public class IniRealmTest {
//Realm:領(lǐng)域,范圍
@Test
public void testAuthentication() {
//路徑
IniRealm realm=new IniRealm("classpath:user.ini");
//獲取安全管理者對(duì)象------DefaultSecurityManager默認(rèn)管理者
DefaultSecurityManager defaultSecurityManager = new DefaultSecurityManager();
//設(shè)置管理者的管理領(lǐng)域
defaultSecurityManager.setRealm(realm);
//SecurityUtils操作securityManager的工具類(lèi),提供了getSecurityManager和setSecurityManger,getSubject的方法
//此處是給工具類(lèi)默認(rèn)管理者對(duì)象
SecurityUtils.setSecurityManager(defaultSecurityManager);
//獲取Subject對(duì)象,可以進(jìn)行l(wèi)ogin 登陸 和logout 登出方法
Subject subject = SecurityUtils.getSubject();
//用戶+密碼的token令牌
UsernamePasswordToken token = new UsernamePasswordToken("Mark1", "123");
//登入
subject.login(token);
//如果token中的密碼和用戶名,在上面的用戶中,那么會(huì)返回true,反之則是false
System.out.println("isAuthenticated:" + subject.isAuthenticated());
//登出
subject.logout();
//因?yàn)榈浅隽?,?huì)返回false
System.out.println("isAuthenticated:" + subject.isAuthenticated());
}
}
查看全部 -
? ? ? ? ? ?簡(jiǎn)單的shiro的Demo
Pom.xml中需要依賴(lài)
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-core</artifactId>
<version>1.4.0</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.25</version>
</dependency>
public class AuthenticationTest {
//Realm其中最簡(jiǎn)單的一種
SimpleAccountRealm simpleAccountRealm = new SimpleAccountRealm();
@Before//一定要寫(xiě)這個(gè)Before,不然找不到對(duì)應(yīng)的用戶
//添加用戶
public void addUser() {
simpleAccountRealm.addAccount("Mark", "123456");
simpleAccountRealm.addAccount("Mark1", "123456");
}
//Realm:領(lǐng)域,范圍
@Test
public void testAuthentication() {
//獲取安全管理者對(duì)象------DefaultSecurityManager默認(rèn)管理者
DefaultSecurityManager defaultSecurityManager = new DefaultSecurityManager();
//設(shè)置管理者的管理領(lǐng)域
defaultSecurityManager.setRealm(simpleAccountRealm);
//SecurityUtils操作securityManager的工具類(lèi),提供了getSecurityManager和setSecurityManger,getSubject的方法
//此處是給工具類(lèi)默認(rèn)管理者對(duì)象
SecurityUtils.setSecurityManager(defaultSecurityManager);
//獲取Subject對(duì)象,可以進(jìn)行l(wèi)ogin 登陸 和logout 登出方法
Subject subject = SecurityUtils.getSubject();
//用戶+密碼的token
UsernamePasswordToken token = new UsernamePasswordToken("Mark1", "123456");
//登入
subject.login(token);
//如果token中的密碼和用戶名,在上面的用戶中,那么會(huì)返回true,反之則是false
System.out.println("isAuthenticated:" + subject.isAuthenticated());
//登出
subject.logout();
//因?yàn)榈浅隽?,?huì)返回false
System.out.println("isAuthenticated:" + subject.isAuthenticated());
}
}
查看全部 -
? ? ?Shiro認(rèn)證的主要步驟
創(chuàng)建SecurityManager
主體提交認(rèn)證
SecurityManager認(rèn)證
Authenticator認(rèn)證
Realm驗(yàn)證
查看全部 -
Shiro 授權(quán):
創(chuàng)建SecurityManager -> 主體授權(quán) -> SecurityManager授權(quán) -> Authorizer授權(quán) -> Realm獲取角色權(quán)限數(shù)據(jù)
查看全部 -
Shiro認(rèn)證過(guò)程:
創(chuàng)建SecurityManager -> 主題提交認(rèn)證 -> SecurityManager認(rèn)證 -> Authenticator認(rèn)證 -> Realm驗(yàn)證
查看全部 -
Shiro整體架構(gòu)
查看全部 -
可以完成項(xiàng)目里的權(quán)限查看全部
-
shiro認(rèn)證流程
創(chuàng)建SecurityManager-->主體提交認(rèn)證-->SecurityManager認(rèn)證-->Authenticator認(rèn)證-->Realm驗(yàn)證(連接數(shù)據(jù)庫(kù)的橋梁)
查看全部
舉報(bào)