SecurityUtils.java 2.05 KB
package com.bsth.security.util;

import com.bsth.entity.sys.Role;
import com.bsth.entity.sys.SecurityUser;
import com.bsth.entity.sys.SysUser;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.context.SecurityContext;
import org.springframework.security.core.context.SecurityContextHolder;

import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;

/**
 * @author PanZhao
 * @ClassName: SecurityUtils
 * @date 2016年3月30日 上午11:28:24
 */
public class SecurityUtils {

    static Logger logger = LoggerFactory.getLogger(SecurityUtils.class);

    /**
     * @return SysUser    返回类型
     * @throws
     * @Title: getCurrentUser
     * @Description: TODO(获取当前用户)
     */
    public static SysUser getCurrentUser(HttpServletRequest request) {
        SysUser user = null;
        try {
            user = (SysUser)(((SecurityContext)request.getSession().getAttribute("SPRING_SECURITY_CONTEXT")).getAuthentication().getPrincipal());
        } catch (Exception e) {
            logger.error("", e);
        }
        return user;
    }

    public static void login(SysUser user, HttpServletRequest request) {
        SecurityUser securityUser = new SecurityUser(user);
        SecurityContext sContext = SecurityContextHolder.getContext();

        List<GrantedAuthority> grantedAuths = new ArrayList<>();
        Set<Role> set = user.getRoles();
        for(Role r : set){
            grantedAuths.add(new SimpleGrantedAuthority(r.getCodeName()));
        }

        sContext.setAuthentication(new UsernamePasswordAuthenticationToken(securityUser, securityUser.getAuthorities(), grantedAuths));
        request.getSession(true).setAttribute("SPRING_SECURITY_CONTEXT", sContext);
    }
}