记住我(RememberMe)的功能
Shiro 提供了记住我(RememberMe)的功能,比如访问如淘宝等一些网站时,关闭了浏览器下次再打开时还是能记住你是谁,下次访问时无需再登录即可访问,基本流程如下:
- 1、首先在登录页面选中RememberMe 然后登录成功;如果是浏览器登录,一般会把RememberMe的Cookie 写到客户端并保存下来;
- 2、关闭浏览器再重新打开;会发现浏览器还是记住你的;
- 3、访问一般的网页服务器端还是知道你是谁,且能正常访问;
- 4、但是比如我们访问淘宝时,如果要查看我的订单或进行支付时,此时还是需要再进行身份认证的,以确保当前用户还是你.
配置基于Form表单的身份验证过滤器
<bean 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" />
</bean>
拦截器配置
/** = 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;
<script type="text/javascript">
$(function () {
$('pre.prettyprint code').each(function () {
var lines = $(this).text().split('\n').length;
var $numbering = $('<ul/>').addClass('pre-numbering').hide();
$(this).addClass('has-numbering').parent().append($numbering);
for (i = 1; i <= lines; i++) {
$numbering.append($('<li/>').text(i));
};
$numbering.fadeIn(1700);
});
});
</script>
版权声明:本文为博主原创文章,未经博主允许不得转载。
分享到:
相关推荐
2. 实现RememberMe服务:配置RememberMeManager,例如设置Cookie的名称、路径、有效期等属性。 3. 缓存管理:配置CacheManager,如EhCache,设置缓存策略和过期时间。 4. 权限验证:在Controller或Service层,使用...
7. **Remember Me**:Shiro提供了Remember Me服务,可以在用户下次访问时自动登录,提高用户体验。 8. **Cryptography支持**:Shiro内置了加密算法,如MD5、SHA等,可以用于密码存储和校验,保证数据安全性。 9. *...
6. **Web集成**:展示如何在Web应用中使用Shiro,包括过滤器配置、Web安全设置等。 7. **实战案例**:提供实际应用场景,例如单点登录(SSO)、API权限控制等。 接下来是"shiro-example-master"示例项目。这个项目...
Shiro-web是Shiro的Web部分,它提供了一系列过滤器(Filter)来处理HTTP请求,如RememberMe、FormAuthentication、SessionManagement等。这些过滤器可以配置在Web应用的`web.xml`中,形成一个安全拦截链。 3. **...
例如,Shiro的RememberMe服务、Session管理以及CSRF防护等功能都在这个模块中实现。 3. **shiro-lang-1.7.1.jar**: 该组件包含了Shiro的表达式语言支持,如在角色和权限定义时使用SpEL(Spring Expression Language...
- 在Shiro中,权限是细粒度的,可以是角色(Role)或者权限(Permission)。 - 当用户登录成功后,Shiro会自动加载该用户的权限信息。 - 使用`Subject.hasRole()`或`Subject.isPermitted()`来检查用户是否有特定...
5. **Web支持**:Shiro提供了一系列过滤器,可以直接集成到Servlet容器中,实现Web应用的安全控制,如登录检查、权限验证等。 6. **测试支持**:Shiro提供了安全测试工具,使得在单元测试和集成测试中模拟用户身份...
Apache Shiro是一个全面的Java安全框架,...总之,理解Apache Shiro的RememberMe机制以及其反序列化漏洞对于保障Web应用程序的安全至关重要。开发者应时刻关注软件的安全更新,并采取必要的措施来保护用户的敏感信息。
Shiro提供了拦截器(Filter)来实现这些功能,我们可以在Struts2的配置文件中配置Shiro Filter,使它在请求处理链中生效。 总的来说,"SSH+shiro+tiles登录示例"是一个基础的Web应用安全实践,它教会了初学者如何...
在这个"Shiro的一个demo"中,我们可以学习到如何在实际项目中集成和使用Shiro来实现基本的安全控制。 首先,我们从`readme.htm`开始。这个文件通常包含了关于演示项目的简要介绍和步骤说明。它可能解释了如何设置...
在本教程中,你将学习如何设置Shiro环境,配置Realms,实现身份验证和授权逻辑,处理会话管理和Remember Me功能,以及如何在Spring应用中集成Shiro,包括在Spring MVC和Spring Boot项目中的实践。此外,还会探讨如何...
内容涵盖 Shiro 认证、加密、授权、安全标签、安全注解、会话管理、缓存、Rememberme 等 JavaEE 企业级开发的核心技术。视频讲授过程中通过分析源代码使学员知其然更知其所以然。 【课程内容】 第一章 问候 Shiro ...
1. **身份验证(Authentication)**:Shiro提供多种身份验证策略,如RememberMe(记住我)和Session超时机制。 2. **授权(Authorization)**:Shiro通过Role和Permission进行权限控制,可以在Controller、Service...
4. **会话管理(Session Management)**:Shiro不仅可以管理应用程序中的会话,还可以跨多个应用服务器实现分布式会话管理。 在手册中,你可以找到以下内容的详细解释: 1. **快速入门**:介绍如何在项目中引入...
2. **Remember Me** 功能:Shiro 提供了一键登录(Remember Me)的功能,可以在用户勾选后,下次访问时自动登录。 3. **Session 管理**:Shiro 的Session管理可以与应用程序的Session协同工作,也可以独立管理,...
3. **shiro-web-1.7.0.jar**:Web支持模块,提供了与Servlet容器的集成,如Filter(如RememberMe、Session管理和 Logout Filter)和Web相关的API,适用于Web应用程序。 4. **shiro-guice-1.7.0.jar**:Guice集成...
5. **Web支持**:Shiro为Web应用提供了过滤器(Filters),可以轻松地集成到Servlet容器中,实现Web安全控制。 6. **简单API**:Shiro的API设计简洁,易于理解和使用,使得开发者能快速上手并实现安全功能。 7. **...
5. **Web 支持**:Shiro 可以很好地集成到Web应用程序中,提供基于HTTP Session的会话管理和各种Web过滤器,如Remember Me服务、CSRF防护等。 6. **测试支持**:Shiro 提供了易于使用的测试工具,帮助开发者在单元...
- Shiro还提供了RememberMe服务,可以实现用户下次访问时的自动登录。 - 通过`SessionListener`和`EventListeners`,可以实现对会话事件的监听,例如会话创建、更新、过期等。 综上,通过SpringBoot与Shiro的整合...
5. **Web 支持**:Shiro 提供了处理 Web 应用安全的特性,如过滤器,可以方便地集成到 Servlet 容器中,实现登录、权限控制等功能。在实际应用中,Shiro 过滤器链配置是关键,它定义了请求如何被不同过滤器处理。 6...