摘要
在使用SpringMVC的时候,我们习惯使用与容器(tomcat)相关的session,不利于扩展。Shiro提供一整套的session解决方案,我们可以稍作修改就可以满足我们各种需求。
先看下我们的基本用法:
@RequestMapping("/index")
public ModelAndView index(HttpSession session){
System.out.println(session.getId());
ModelAndView modelAndView = new ModelAndView("main/index");
return modelAndView;
}
如果我们添加断点进行调试,可以看到session类型是:
org.apache.catalina.session.StandardSessionFacade
依赖于tomcat容器。
Shiro是一款非常优秀的用户-角色-权限管理框架,具体可以Google下。当然,Shiro也提供Session管理模块,现在我们就使用shiro+spring实现一个与容器无关的session。
http://my.oschina.net/vincentzhao/blog/484341
分享到:
相关推荐
重写session机制,默认session是以临时文件形式存储在服务器,将session写入数据库,建表和注释写的都很清晰,已测试
在本文中,我们介绍了如何使用 Spring Boot 整合 Redis 实现 Shiro 的分布式 Session 共享。我们重写了 SessionDao,使用 RedisTemplate 来存储和管理 Session。这样,我们可以在分布式环境中实现 Session 共享,...
- **配置Shiro Realm**:创建自定义的`Realm`,继承自`AuthorizingRealm`,并重写`doGetAuthenticationInfo`和`doGetAuthorizationInfo`方法,用于从数据库中获取用户信息和权限信息。 - **配置Shiro Filter**:在...
- 对于网页端 Realm,我们可以继承 `AuthorizingRealm` 类,并重写 `doGetAuthenticationInfo` 和 `doGetAuthorizationInfo` 方法,实现基于邮箱和密码的验证。 - 对于手机端 Realm,同样继承 `AuthorizingRealm`...
3. **编写Shiro配置**:创建一个Shiro配置类,配置Realm(权限认证),并设置SessionManager使用RedisSessionDAO,以便将Session数据保存到Redis中。 4. **自定义Realm**:根据实际业务需求,实现自定义的...
在`RedisSessionDAO`中,我们需要重写`doCreate`、`doReadSession`、`doUpdate`和`doDelete`等方法,分别对应Session的创建、读取、更新和删除操作。这些操作都需要通过Redis客户端来执行。例如,可以将Session的ID...
通过集成Spring,我们可以使用Shiro的SessionManager和SessionDAO,配合Spring Session,实现分布式会话存储。 8. **登录与登出** Shiro 提供了简单的登录和登出API。在Controller中,我们可以调用`Subject.login...
此外,我们还需要配置Shiro的Session管理,可以使用Spring Session来集成Shiro的会话管理,以便跨多个节点共享会话数据。 至于`ztree`,它是一个用于构建前端树形结构的JavaScript库,常用于展示权限节点。在权限...
你可以配置 Shiro 使用 Spring Session 或 Redis 进行分布式会话管理。 6. **登录与登出流程**:Shiro 提供了处理用户登录和登出的 API,包括登录验证、生成 Token、存储用户信息以及登出清理会话等步骤。 7. **...
5. session过期时间设置:在Shiro配置中,可以设置session超时时间,例如`sessionManager.setGlobalSessionTimeout(3600 * 1000);`表示会话超时时间为3600秒。 6. 缓存管理:Shiro支持Redis、Ehcache等多种缓存机制...
Shiro的特点在于其简单易用,它提供了认证(Authentication)、授权(Authorization)、会话管理(Session Management)、密码加密(Cryptography)等核心安全功能。 Shiro的RBAC模型包含了三个主要元素:用户、...
在本文中,我们将深入探讨Apache Shiro的基础配置和代码实现,以帮助你理解如何有效地使用Shiro进行权限控制。 **1. Shiro架构组件** Shiro的核心组件包括:Subject、Realms、Caches、Session Manager、...
Realm是Shiro与应用数据源交互的核心组件,需要继承AuthorizingRealm并重写doGetAuthenticationInfo和doGetAuthorizationInfo方法,实现用户认证和权限校验。例如: ```java public class UserRealm extends ...
- **集成Spring Security**:如果项目已经使用了Spring Security,可以考虑与Shiro结合使用,发挥两者优势,如使用Spring Security进行复杂的认证,Shiro进行授权。 最后,通过不断实践和学习,你将更深入地理解...
Apache Shiro是一个强大的Java安全框架,它提供了身份验证(Authentication)、授权(Authorization)以及会话管理(Session Management)等功能,简化了开发人员在构建安全应用时的复杂性。本Demo旨在展示如何使用...
- **并发用户登录数控制**:Shiro提供了SessionManager和Subject的接口,可以用来监控当前在线用户,通过实现自定义的SessionListener来检测并发登录数,超过限制时强制登出其他在线用户。 - **记住密码功能**:...
2. **配置Shiro**:创建`shiro.ini`或`ShiroConfig.java`来配置Shiro的核心组件,如安全过滤器链、realm(权限认证)、session管理等。在这个示例中,登录密码默认为"123456",应确保在realm中配置相应的密码加密...
6. **整合Spring MVC Controller**:在Controller中,你可以使用Shiro的`Subject`对象来检查用户权限。例如,通过`subject.hasRole("admin")`或`subject.isPermitted("admin:create")`来判断用户是否具有特定的角色...
在这个“Shiro实例(netbeans7.0)”中,我们将探讨如何在NetBeans 7.0集成开发环境中使用Shiro 1.1.0来构建安全的应用程序。 首先,我们需要了解Shiro的基本概念: 1. **身份验证(Authentication)**:确认用户...
在Spring的配置文件中,我们需要定义Realm(域),这是Shiro与应用程序数据源交互的地方,通常需要继承AuthorizingRealm,并重写其中的doGetAuthenticationInfo和doGetAuthorizationInfo方法。例如: ```xml <!--...