Shiro入门之实现记住我

概述

“记住我”是怎样的呢?看下图,有个印象:

就是一个复选框,只要勾选了这个复选框,那么后台就会将用户信息保存到cookie。

但需要注意的是,也可能是我以前理解错了,普通的javaWeb记住我功能和Shiro的记住我,是不一样的,或者说以前的“记住我”只是记住了登录账号和密码,但没有记住用户已经登录。

普通的“记住我”功能就是,用户勾选“记住我”后,用户登录的用户名和登录密码保存到cookie中,而每次访问登录页面,都会读取cookie中保存的用户名和密码然后重新填写到输入框中,实现了记住我的功能。

普通的javaWeb记住我功能可以参考博客:https://blog.csdn.net/cnds123321/article/details/101368020

但Shiro的记住我没有记住账号和密码的能力,可以自己实现,但也是将用户已经成功登录的信息保存到cookie中,而是几天之内再打开这个网站,不需要登录,即使关闭浏览器也可以。

当然,对于上面的两种,其实可以同时实现,达到更加完备的“记住我”实现。

实现

不展示完整的代码,只展示关键的“记住我”逻辑部分代码,完整代码可以查看分享的源码地址。

第一步:前端页面有一个记住我的复选框。

<form action="/user/login" method="post">
    用户名:<input type="text" name="username"/><br/>
    密码:<input type="password" name="password"/><br/>
    记住我:<input type="checkbox" name="rememberMe">
    <input type="submit" value="登录">
    <p>注:登录成功的账户是root和123456</p>
</form>

第二步:处理登录逻辑,如果勾选了复选框则使用Shiro记住我,否则不设置。

第三步:在spring的配置文件applicationContext.xml中进行shiro“记住我”的配置,也可以实现注解配置,这里不提供。

第四步:修改shiro 的过滤器的权限认证级别。

第五步:测试

查看响应的cookie,其实没有保存用户信息

发送其他请求,发现请求cookie也没有携带rememberMe

接下来看看勾选了“记住我”的情况:

发现响应cookie有值了

而且发送其他请求的时候,请求cookie也会携带rememberMe。

所以到此实现了“记住我”功能。

源码

本节的源码地址:GitHub的Demo

猜你喜欢

转载自blog.csdn.net/cnds123321/article/details/113728997