Java tutorial
/** * Copyright (c) 2005-2009 springside.org.cn * * Licensed under the Apache License, Version 2.0 (the "License"); * * $Id: SpringSecurityUtils.java,v 1.1 2011/03/28 08:01:24 zwm Exp $ */ package com.rosy.bill.security; import java.util.Collection; import javax.servlet.http.HttpServletRequest; import org.springframework.security.core.Authentication; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.context.SecurityContext; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.userdetails.User; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.web.authentication.WebAuthenticationDetails; import org.springframework.security.web.authentication.preauth.PreAuthenticatedAuthenticationToken; /** * SpringSecurity. * * ?. ??SpringSecurity 3.0.x. * * @author calvin */ public class SpringSecurityUtils { /** * ??, SpringSecurityUser?, ?null. */ @SuppressWarnings("unchecked") public static <T extends User> T getCurrentUser() { Authentication authentication = getAuthentication(); if (authentication == null) { return null; } Object principal = authentication.getPrincipal(); if (!(principal instanceof User)) { return null; } return (T) principal; } /** * ????, ?. */ public static String getCurrentUserName() { Authentication authentication = getAuthentication(); if (authentication == null || authentication.getPrincipal() == null) { return ""; } return authentication.getName(); } /** * ????, ?. */ public static String getCurrentAccountName() { Authentication authentication = getAuthentication(); if (authentication == null || authentication.getPrincipal() == null) { return ""; } return authentication.getName(); } /** * ??IP, ?. */ public static String getCurrentUserIp() { Authentication authentication = getAuthentication(); if (authentication == null) { return ""; } Object details = authentication.getDetails(); if (!(details instanceof WebAuthenticationDetails)) { return ""; } WebAuthenticationDetails webDetails = (WebAuthenticationDetails) details; return webDetails.getRemoteAddress(); } /** * ?, ??true. */ public static boolean hasAnyRole(String... roles) { Authentication authentication = getAuthentication(); if (authentication == null) { return false; } Collection<GrantedAuthority> grantedAuthorityList = authentication.getAuthorities(); for (String role : roles) { for (GrantedAuthority authority : grantedAuthorityList) { if (role.equals(authority.getAuthority())) { return true; } } } return false; } /** * UserDetails?Security Context. * * @param userDetails ??. * @param request ?IP??,?Null. */ public static void saveUserDetailsToContext(UserDetails userDetails, HttpServletRequest request) { PreAuthenticatedAuthenticationToken authentication = new PreAuthenticatedAuthenticationToken(userDetails, userDetails.getPassword(), userDetails.getAuthorities()); if (request != null) { authentication.setDetails(new WebAuthenticationDetails(request)); } SecurityContextHolder.getContext().setAuthentication(authentication); } /** * ?Authentication, ?SecurityContextnull. */ private static Authentication getAuthentication() { SecurityContext context = SecurityContextHolder.getContext(); if (context == null) { return null; } return context.getAuthentication(); } }