java 记住密码 安全_Java 通过 Shiro 配置 RememberMe 实现记住密码功能

Apache Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理功能,可为任何应用提供安全保障 - 从命令行应用、移动应用到大型网络及企业应用。下面讲述一下如何实现记住密码,一般记住密码就是把用户的基本信息存入浏览器Cookie,下次登录时优先验证Cookie,后端做处理操作,依此来实现记住密码操作,而shiro中自带RememberMe功能,只需简单配置即可。

注意:对于安全性要求高的网站不建议有记住密码功能,因为Cookie是保存在本机电脑浏览器中,不排除其他用户使用该电脑,复制走Cookie,导入其他电脑继续使用该账号登录。

具体操作如下:

1、配置application-shiro.xml文件,RememberMe 配置和rememberMe管理器,具体代码如下:

rememberMeCookie即记住我的Cookie并保存时长7天;rememberMe管理器中参数cipherKey是加密rememberMe Cookie的密钥;默认AES算法。

2、设置securityManager安全管理器的rememberMeManager,具体配置如下:

/login.jsp = anon

/authenticated.jsp = authc

/logout = logout

/** = user

注意:/authenticated.jsp = authc”表示访问该地址用户必须身份验证通过(Subject. isAuthenticated()==true);而“/** = user”表示访问该地址的用户是身份验证通过或RememberMe登录的都可以进行任何操作的。

3、认证MyShiroRealm.java类,是进行登录认证信息判断操作的,具体代码如下:// 获取认证信息

protected AuthenticationInfo doGetAuthenticationInfo(

AuthenticationToken authcToken) throws AuthenticationException {

CaptchaUsernamePasswordToken token = (CaptchaUsernamePasswordToken) authcToken;

String username = token.getUsername();

if (username != null && !"".equals(username)) {

User users = (User) en.single("from User where isDeleted=0 and name=?0",username);

if (users != null) {

return new SimpleAuthenticationInfo(users, users.getPassword(), getName());

}

}

return null;

}

注意:Cookie对长度是有限制的,不能全部把用户信息存储到Cookie中,不然会出现数组下表越界错误,即return new SimpleAuthenticationInfo(user.getUsername(), user.getPassword(), getName())存入SimpleAuthenticationInfo对象时不能把所有对象信息放入其中的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值