//all done - log out! currentUser.logout();
Shiro 的API 使用它的Subject 概念从根本上代表了“当前用户”的概念。
如以下代码:
public static User getSessionUser() { Subject subject = SecurityUtils.getSubject(); if (subject != null && subject.getPrincipal() != null && subject.getPrincipal() instanceof User) { return (User) subject.getPrincipal(); } return null; }
让当前用户进行登陆
if (!currentUser.isAuthenticated()) { UsernamePasswordToken token = new UsernamePasswordToken("lonestarr", "vespa"); token.setRememberMe(true); try { currentUser.login(token); } catch (UnknownAccountException uae) { log.info("There is no user with username of " + token.getPrincipal()); } catch (IncorrectCredentialsException ice) { log.info("Password for account " + token.getPrincipal() + " was incorrect!"); } catch (LockedAccountException lae) { log.info("The account for username " + token.getPrincipal() + " is locked. " + "Please contact your administrator to unlock it."); } // ... catch more exceptions here (maybe custom ones specific to your application? catch (AuthenticationException ae) { //unexpected condition? error? } }
判断是否有某种角色
//test a role: if (currentUser.hasRole("schwartz")) { log.info("May the Schwartz be with you!"); } else { log.info("Hello, mere mortal."); }
判断是否有某种权限
//test a typed permission (not instance-level) if (currentUser.isPermitted("lightsaber:weild")) { log.info("You may use a lightsaber ring. Use it wisely."); } else { log.info("Sorry, lightsaber rings are for schwartz masters only."); } //a (very powerful) Instance Level permission: if (currentUser.isPermitted("winnebago:drive:eagle5")) { log.info("You are permitted to 'drive' the winnebago with license plate (id) 'eagle5'. " + "Here are the keys - have fun!"); } else { log.info("Sorry, you aren't allowed to drive the 'eagle5' winnebago!"); }
退出系统
相关推荐
Apache Shiro是一个强大的Java安全框架,它为开发者提供了认证、授权、加密和会话管理等功能,使得在构建...通过理解Shiro的基本概念和组件,开发者能够更有效地利用Shiro保护他们的应用程序,并确保用户数据的安全。
在描述中提到的"最新版shiro1.7.1.jar包,安全升级专用",暗示这个版本可能是对之前版本的安全性进行了增强,或者修复了一些已知的安全漏洞,以提供更稳定和安全的服务。 从压缩包子文件的文件名称列表,我们可以...
3. **加密**:Shiro提供了一些加密工具类,例如`HashService`用于密码哈希,`CipherService`用于数据加密,这些工具可以帮助你安全地存储和处理敏感信息。 4. **会话管理**:Shiro可以跨应用管理用户的会话,包括...
然后,`shrio-example.rar`提供了一些实战代码示例,帮助开发者更好地理解和运用Shiro。这些示例可能包括简单的登录注销、角色和权限的设置、会话管理等场景。通过运行和分析这些示例,你可以看到Shiro如何在实际...
1. **Shiro基础概念** - **身份验证(Authentication)**:确认用户身份的过程,通常涉及用户名和密码的校验。 - **授权(Authorization)**:确定用户是否有权限访问特定资源,即权限管理。 - **会话管理...
1. **Subject**:Shiro 的核心概念,代表当前系统中的“安全主体”,可以是用户、服务、系统等。Subject 实现了与安全相关的操作,如登录、登出、获取权限等。 2. **Realms**: Realm 是 Shiro 与具体安全数据源...
大多数情况下,可以将其视为 Shiro 的“用户”概念。Subject 代表了当前用户的所有安全相关操作。 2. **SecurityManager**:安全管理者,是 Shiro 的核心组件之一,采用 Facade 模式设计。它负责管理 Shiro 内部...
1. **Subject**:是Shiro的中心概念,代表了当前“安全的用户”。它提供了进行认证、授权、会话管理和事件监听的主要接口。 2. **Realms**: Realm是Shiro与应用安全数据源(如数据库)的桥梁,它负责验证凭证并...
在本文中,我们将深入探讨 Apache Shiro 的核心概念及其最简单的整合方式。 一、Shiro 的核心组件 1. 身份认证(Authentication):这是验证用户身份的过程,通常涉及用户名和密码的输入。Shiro 提供了 Realm 接口...
总的来说,“Shiro入门到精通”课程覆盖了从基础概念到高级特性的全面内容,结合源码分析和Spring Security的对比,将使你对Shiro有深入的理解,能够在实际项目中灵活运用。无论你是初学者还是有经验的开发者,都能...
7. **org.apache.shiro.subject**: Shiro的核心概念,代表当前操作的主体(如用户),包括其认证信息和授权信息。 8. **org.apache.shiro.web**: 针对Web应用的安全管理,提供过滤器、控制器等功能,易于与Servlet...
Shiro 的核心概念** - **Subject**:Shiro 的核心接口,代表当前操作的用户。可以是已认证的用户,也可以是匿名用户。 - **Realms**:Shiro 从 Realm 获取安全信息(如用户、角色、权限)。每个 Realm 对应一个数据...
6. **测试支持**:Shiro提供了一些测试工具,方便开发者在单元测试和集成测试中验证安全性。 描述中提到的“解压后会有一个文件夹”,这可能是指解压后的Shiro库包含了多个JAR文件,这些文件通常包括Shiro的核心...
- **Cryptography**:Shiro内置了一些加密工具,如MD5、SHA等,方便开发者进行数据加密。 - **Session Manager**:管理用户会话,包括创建、销毁、存储会话数据等。 3. **Shiro核心组件** - **SecurityManager**...
首先,让我们来了解一下Shiro的核心概念: 1. **认证**:也称为身份验证,是确认用户身份的过程。Shiro提供了多种认证方式,包括基于用户名/密码的登录、API令牌等。它支持简单的内存存储和复杂的数据库验证。 2. ...
4. **加密**:Shiro提供了一些基本的加密工具,如密码哈希、对称和非对称加密算法,帮助开发者对敏感数据进行加密保护。例如,用户密码通常需要存储为哈希值,而不是明文,Shiro提供了简便的方法来实现这一过程。 5...
Subject是Shiro的中心概念,代表当前用户或系统中的任何实体。Realms是Shiro与应用安全数据源(如数据库、LDAP等)的桥梁,负责验证凭证。CredentialsMatcher则用于比较用户提供的凭证(如密码)和存储在 Realm 中的...
1. **Subject**:Shiro 的核心概念,代表当前操作用户,它是一个抽象的概念,可以是实际的用户,也可以是系统中的其他实体,如服务、后台进程等。 2. **SecurityManager**:Shiro 的安全管理器,负责协调Subject 和...
在学习和使用Shiro时,了解并掌握这些核心概念至关重要。通过阅读"shiro-core-1.3.2-sources.jar"中的源代码,你可以更深入地理解Shiro的内部实现,提升自己的安全编程技能。同时,结合官方文档和其他教程,可以更好...
- **Subject**: 表示当前用户或系统的安全主体,可以是用户、服务等,是 Shiro 的核心概念。 - **Session**: Shiro 支持会话管理,可以替代或扩展基于Servlet容器的会话。 - **CachingManager**: 缓存管理器,...