`
Clayz
  • 浏览: 299799 次
  • 性别: Icon_minigender_1
  • 来自: 东京
社区版块
存档分类
最新评论

Acegi获取用户信息

阅读更多
import org.acegisecurity.Authentication;
import org.acegisecurity.context.SecurityContext;
import org.acegisecurity.context.SecurityContextHolder;
import org.acegisecurity.ui.WebAuthenticationDetails;
import org.acegisecurity.userdetails.UserDetails;

public class ThreadLocaTest {
    public static String getUsername() {
        SecurityContext ctx = SecurityContextHolder.getContext();
        if (ctx != null) {
            Authentication auth = ctx.getAuthentication();
            if (auth != null) {
                Object principal = auth.getPrincipal();
                if (principal instanceof UserDetails) {
                    return ((UserDetails) principal).getUsername();
                } else {
                    return principal.toString();
                }
            }
        }
        return null;
    }

    public static String getSessionID() {
        SecurityContext ctx = SecurityContextHolder.getContext();
        if (ctx != null) {
            if (ctx instanceof SecurityContext) {
                SecurityContext sc = (SecurityContext) ctx;
                Authentication auth = sc.getAuthentication();
                if (auth != null) {
                    Object details = auth.getDetails();
                    if (details instanceof WebAuthenticationDetails) {
                        return ((WebAuthenticationDetails) details).getSessionId();
                    } else {
                        return null;
                    }
                }
            }
        }
        return null;
    }
}

or

    /**
     * Get current user which stored in session You must set a user when using junit test
     * @return IUserDetails
     */
    public static IUserDetails getUser() {
        // if not in unit test environment, get the current user using acegi
        if ((SecurityContextHolder.getContext() == null)
                || !(SecurityContextHolder.getContext() instanceof SecurityContext)
                || (((SecurityContext) SecurityContextHolder.getContext())
                        .getAuthentication() == null)) {
            return null;
        }
        Authentication auth = SecurityContextHolder.getContext().getAuthentication();
        if (auth.getPrincipal() == null) {
            return null;
        }
        IUserDetails user = null;
        if (auth.getPrincipal() instanceof IUserDetails) {
            user = (IUserDetails) auth.getPrincipal();
        }
        return user;
    }
 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics