Web中rememberMe 功能(shiro的实现)

记住我(RememberMe)的功能

Shiro 提供了记住我(RememberMe)的功能,比如访问如淘宝等一些网站时,关闭了浏览器下次再打开时还是能记住你是谁,下次访问时无需再登录即可访问,基本流程如下:
- 1、首先在登录页面选中RememberMe 然后登录成功;如果是浏览器登录,一般会把RememberMe的Cookie 写到客户端并保存下来;
- 2、关闭浏览器再重新打开;会发现浏览器还是记住你的;
- 3、访问一般的网页服务器端还是知道你是谁,且能正常访问;
- 4、但是比如我们访问淘宝时,如果要查看我的订单或进行支付时,此时还是需要再进行身份认证的,以确保当前用户还是你.

配置基于Form表单的身份验证过滤器

    id="formAuthenticationFilter" class="org.apache.shiro.web.filter.authc.FormAuthenticationFilter">
        <property name="usernameParam" value="username" />
        <property name="passwordParam" value="password" />
        <property name="rememberMeParam" value="rememberMe" />
        <property name="loginUrl" value="/api/user/login" />
     

拦截器配置

/** = user

使用shiro默认的user拦截器。该拦截器要求用户已经登录或者勾选了RememberMe,就可以放行。

前端

这里写图片描述

shiro设置rememberMe

用firefox浏览器可以看出,shiro在返回响应的时候,首先删除了之前的rememberMe的cookie,然后重新在客户端设置了rememberMe的cookie。

这里写图片描述

cookie详细信息,shiro默认设置有效期为1年
这里写图片描述

用户再次访问时,浏览器会发送这个rememberMe的cookie给服务端,无需再登录即可访问
这里写图片描述

其他说明

源码托管在https://github.com/Jdoing/myweb;
参考http://jinnianshilongnian.iteye.com/blog/2031823;

版权声明:本文为博主原创文章,未经博主允许不得转载。

你可能感兴趣的:(Web中rememberMe 功能(shiro的实现))