shiro自定义密码匹配验证,密码加密验证。
2017-03-28 17:55
363 查看
1.更改shiro安全管理配置
<property name="realm" ref="systemAuthorizingRealm" /> ,Spring自动注入。
2.自定义密码验证
如果不注释就是用这种方式也可以。
搞定收工!
<!-- 定义Shiro安全管理配置 --> <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager"> <!-- <property name="realm" ref="systemAuthorizingRealm" /> --> <property name="realm" ref="userRealm" /> <property name="sessionManager" ref="sessionManager" /> <property name="cacheManager" ref="shiroCacheManager" /> </bean> <!-- 3.1 直接配置继承了org.apache.shiro.realm.AuthorizingRealm的bean --> <bean id="userRealm" class="com.thinkgem.jeesite.modules.sys.security.SystemAuthorizingRealm"> <!-- 配置密码匹配器 --> <property name="credentialsMatcher" ref="credentialsMatcher"/> </bean> <!-- 凭证匹配器 --> <bean id="credentialsMatcher" class="com.thinkgem.jeesite.modules.sys.security.CustomCredentialsMatcher"> </bean>
<property name="realm" ref="systemAuthorizingRealm" /> ,Spring自动注入。
2.自定义密码验证
/** * Description: 告诉shiro如何验证加密密码,通过SimpleCredentialsMatcher或HashedCredentialsMatcher * @Author: wjl * @Create Date: 2017-3-14 */ public class CustomCredentialsMatcher extends SimpleCredentialsMatcher { @Override public boolean doCredentialsMatch(AuthenticationToken authcToken, AuthenticationInfo info) { UsernamePasswordToken token = (UsernamePasswordToken) authcToken; Object accountCredentials = getCredentials(info); // String pwd =encrypt32(String.valueOf(token.getPassword()));//md5 32位加密 String pwdType =String.valueOf(token.getPassword());// 判断一下密码是否是用户输入的,还是JCIS传过来的 if(pwdType.length() == 32){ return equals(pwdType, accountCredentials); //密码长度=32位,说明是md5加密过,是从xx传进来的 32位加密。 } String pwdUser =encrypt32(String.valueOf(token.getPassword()));//不等于32 是用户输入的密码。 如果用户输入的密码长度位32那么里面会有一个bug return equals(pwdUser, accountCredentials); //将密码加密与系统加密后的密码校验,内容一致就返回true,不一致就返回false //return super.doCredentialsMatch(token, info) ; }3.更改密码验证,注释掉自带的。
/** * 设定密码校验的Hash算法与迭代次数 */ // @PostConstruct // public void initCredentialsMatcher() { // HashedCredentialsMatcher matcher = new HashedCredentialsMatcher(SystemService.HASH_ALGORITHM); // matcher.setHashIterations(SystemService.HASH_INTERATIONS); // setCredentialsMatcher(matcher); // // setCredentialsMatcher(new CustomCredentialsMatcher()); // }
如果不注释就是用这种方式也可以。
/** * 设定密码校验的Hash算法与迭代次数 */ @PostConstruct public void initCredentialsMatcher() { setCredentialsMatcher(new CustomCredentialsMatcher()); }
搞定收工!
相关文章推荐
- 在SSM中使用shiro实现登录验证(附密码加密)
- 【Shiro权限管理】9.Shiro密码加密匹配
- django 自定义 密码加密方式 及自定义验证方式
- shiro自定义密码验证
- 在SSM中使用shiro实现登录验证(附密码加密)
- Shiro密码加密验证服务
- django 自定义 密码加密方式 及自定义验证方式
- jeesite登录过程中,shiro密码匹配验证
- Django 自带密码加密,自定密码加密方式 及自定义验证方式
- 使用shiro默认的密码验证系统验证加密密码
- Cas单点登录(5)数据库验证用户之自定义密码加密
- shiro自定义密码验证
- 使用Apache Shiro进行身份认证-密码加密
- 求助:WCF 安全之自定义的用户名/密码身份验证 中的identity dns怎么设置
- WCF实现自定义用户名和密码验证,并以https传输
- Java的MD5对密码进行加密和验证的类
- restlet2.1 学习笔记(十)使用自定义SecretVerifier验证用户名与密码
- 对文本框中密码加密,对web.config中字符串的加密,身份验证
- DNN中自定义密码验证
- Ext JS 中实现自定义验证 密码修改 确认密码