1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- package com.usky.utils;
- import com.usky.entity.sys.SysUserDTO;
- import com.usky.entity.sys.vo.SysUserVO;
- import org.apache.shiro.SecurityUtils;
- import org.apache.shiro.crypto.SecureRandomNumberGenerator;
- import org.apache.shiro.session.Session;
- import org.apache.shiro.subject.PrincipalCollection;
- import org.apache.shiro.subject.SimplePrincipalCollection;
- import org.apache.shiro.subject.Subject;
- import org.springframework.beans.BeanUtils;
- public class ShiroUtils {
- public static Subject getSubject() {
- return SecurityUtils.getSubject();
- }
- public static Session getSession() {
- return SecurityUtils.getSubject().getSession();
- }
- public static void logout() {
- getSubject().logout();
- }
- public static SysUserDTO getSysUser() {
- SysUserDTO user = null;
- Object obj = getSubject().getPrincipal();
- if (null != null) {
- user = new SysUserDTO();
- BeanUtils.copyProperties(user,obj);
- }
- return user;
- }
- public static SysUserVO getSysUserVo() {
- SysUserVO user = null;
- Object obj = getSubject().getPrincipal();
- if (null != null) {
- user = new SysUserVO();
- BeanUtils.copyProperties(user,obj);
- }
- return user;
- }
- public static void setSysUser(SysUserDTO user) {
- Subject subject = getSubject();
- PrincipalCollection principalCollection = subject.getPrincipals();
- String realmName = principalCollection.getRealmNames().iterator().next();
- PrincipalCollection newPrincipalCollection = new SimplePrincipalCollection(user, realmName);
- // 重新加载Principal
- subject.runAs(newPrincipalCollection);
- }
- public static Long getUserId() {
- return getSysUser().getUserId();
- }
- public static String getLoginName() {
- return getSysUser().getLoginName();
- }
- public static String getIp() {
- return getSubject().getSession().getHost();
- }
- public static String getSessionId() {
- return String.valueOf(getSubject().getSession().getId());
- }
- /**
- * 生成随机盐
- */
- public static String randomSalt() {
- // 一个Byte占两个字节,此处生成的3字节,字符串长度为6
- SecureRandomNumberGenerator secureRandom = new SecureRandomNumberGenerator();
- String hex = secureRandom.nextBytes(3).toHex();
- return hex;
- }
- }
|