SecurityUtils.getSubject().getPrincipal()是如何获取到当前用户信息
时间: 2024-06-03 14:10:59 浏览: 238
SecurityUtils.getSubject().getPrincipal()是使用Apache Shiro框架中的SecurityUtils工具类获取当前用户信息的方法。它可以获取当前已认证的用户,即已经通过登录验证的用户信息,包括用户的身份和角色信息等。该方法会返回一个对象,该对象通常是User对象或Principal对象,具体取决于你在认证时设置的主体对象。需要注意的是,如果当前用户未经过认证,则该方法会返回null。
相关问题
public class ShiroUtils { public static Session getSession() { return SecurityUtils.getSubject().getSession(); } public static Subject getSubject() { return SecurityUtils.getSubject(); } public static SysUser getUserEntity() { return (SysUser)SecurityUtils.getSubject().getPrincipal(); } public static Long getUserId() { return getUserEntity().getUserId(); } public static void setSessionAttribute(Object key, Object value) { getSession().setAttribute(key, value); } public static Object getSessionAttribute(Object key) { return getSession().getAttribute(key); } public static boolean isLogin() { return SecurityUtils.getSubject().getPrincipal() != null; } public static void logout() { SecurityUtils.getSubject().logout(); } public static boolean isHasRole(String roleSign) { return SecurityUtils.getSubject().hasRole(roleSign); } }
这是一个Shiro权限框架相关的工具类,其中包含了一些常用的操作方法,比如 getSession、getSubject、getUserEntity、getUserId、setSessionAttribute、getSessionAttribute、isLogin、logout、isHasRole。这些方法可以方便地获取当前用户的信息,判断用户是否登录,以及查询用户是否拥有某个角色等操作。Shiro是一个非常强大的安全框架,可以帮助我们快速地实现权限控制功能。
SecurityUtils.getSubject().getPrincipal()是如何获取到当前用户信息,展示详细的代码过程
好的,我明白了。下面是代码过程:
1. 首先,我们需要导入 SecurityUtils 和 Subject 类:
```
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.subject.Subject;
```
2. 然后,我们可以通过调用 SecurityUtils.getSubject() 方法获取当前用户的 Subject 对象:
```
Subject currentUser = SecurityUtils.getSubject();
```
3. 通过调用 Subject 对象的 getPrincipal() 方法,我们可以获取当前用户的身份信息:
```
Object principal = currentUser.getPrincipal();
```
4. 如果当前用户已经进行了身份验证,那么 getPrincipal() 方法将返回包含用户身份信息的对象。否则,它将返回 null。
因此,SecurityUtils.getSubject().getPrincipal() 方法是获取当前已认证用户信息的常用方法。
阅读全文