java web shiro_javase和javaweb环境下shiro的搭建
shiro-1
javase環(huán)境下搭建shiro
1.導入jar包
2.配置文件:存儲臨時文件
shiro.ini文件:存儲數(shù)據(jù),用戶名,密碼,角色,權(quán)限
3.代碼
// 1.獲取安全管理器
Factory factory = new IniSecurityManagerFactory("classpath:shiro.ini");
SecurityManager securityManager = factory.getInstance();
// 2.設(shè)置安全管理器
SecurityUtils.setSecurityManager(securityManager);
// 3.獲取subject對象,即要登錄的對象
Subject subject = SecurityUtils.getSubject();
spring與shiro集成
1.導入jar包
2.搭建好spring,springmvc
3.搭建shiro環(huán)境
1.web.xml
shiroFilter
org.springframework.web.filter.DelegatingFilterProxy
targetFilterLifecycle
true
shiroFilter
/*
2.在spring.xml中進行相關(guān)配置
shiro配置的核心:spring.xml歐中配置的一個bean
web.xml中DelegatingFilterProxy作用:入口,完成servlet容器到ioc容器的關(guān)聯(lián),到spring容器中找filter-name相同名字的bean實例
如果沒有配置targetBeanName屬性,則filter-name必須與bean的name相同
表單提交的數(shù)據(jù)封裝到 usernamePasswordToken 數(shù)據(jù)庫查詢到的數(shù)據(jù)封裝到SimpleAuthenticationInfo
加密:MD5, SHA1
1.存儲數(shù)據(jù)時需要將用戶輸入的明文繼續(xù)加密(Hibernate當中涉及md5加密) (Ream.java)
//將存入數(shù)據(jù)庫的密碼進行MD5加密
SimpleHash sh = new SimpleHash("md5", credentials, null, 2019);
2.前端用戶輸入的值,進行加密,string字符串經(jīng)過md5加密(spring.xml)
class="org.apache.shiro.authc.credential.HashedCredentialsMatcher">
鹽值加密:原有加密的基礎(chǔ)上加密(兩個相同密碼在數(shù)據(jù)庫存儲的值還是不一樣)
1.前端token當中獲取的密碼應(yīng)該進行鹽值加密
ByteSource salt = ByteSource.Util.bytes(principal);
new SimpleAuthenticationInfo(principal, sh, salt, realmName);
2.數(shù)據(jù)庫中的值進行鹽值加密
new SimpleHash("md5", credentials, salt, 2019);
多Realm獲取數(shù)據(jù):將一個密碼存放在多個數(shù)據(jù)庫中,建立多個Realm,并且每個realm使用不同的加密方式,在subject.login中會進行多個realm的調(diào)用,執(zhí)行多次驗證,提高數(shù)據(jù)安全性
1.第一種方法:
2.第二種方法:通過ModularRealmAuthenticator認證器
shiro認證策略:多個realm訪問多個數(shù)據(jù)庫,如何判斷是否登錄成功
1.FirstSucessfulStrategy 第一個realm認證成功就算成功
2.AtLeastOneSuccessfulStrategy 多個realm認證時,一個成功代表成功(默認)
3.AllSuccessfulStrategy 多個realm認證時,全部成功才代表成功
授權(quán):控制哪一個用戶可以訪問哪一個web資源
1.編程式
if(subect.hasRole){
//有權(quán)限
}else{
//沒有權(quán)限
}
2.注解式:通過在執(zhí)行的java方法上注解
@RequireRoles("admin")
public void hello(){
//有權(quán)限
}
3.jsp/gsp標簽
有權(quán)限
1.在FilterChainDefinitions中定義web資源對應(yīng)角色
web資源=roles[角色名稱]
/admin.jsp=roles[admin]
2.一個用戶進行登錄認證成功之后,之中還是要查找認證成功的角色擁有什么角色.realm可以和數(shù)據(jù)庫交互,獲取指定認證成功的用戶對應(yīng)的角色
1.我們可以自定義一個Realm,繼承AuthorizingRealm,認證和授權(quán)
2.在ioc容器配置指定的Realm的bean實例(授權(quán)器)
3.告知securityManager使用哪一個授權(quán)管理器
參考視頻:點擊我
總結(jié)
以上是生活随笔為你收集整理的java web shiro_javase和javaweb环境下shiro的搭建的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: deepin启动盘无法引导安装_深度启动
- 下一篇: java的query_Java-Quer