Java tutorial
package com.lll.util; /** * Copyright (c) 2005-2009 springside.org.cn * * Licensed under the Apache License, Version 2.0 (the "License"); * * $Id: SpringSecurityUtils.java 1062 2010-04-27 16:51:10Z calvinxiu $ */ 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. * */ public class SpringSecurityUtils { /** * ??, SpringSecurityUser?, ?null. */ @SuppressWarnings("unchecked") public static <T extends User> T getCurrentUser() { Authentication authentication = getAuthentication(); if (authentication != null) { Object principal = authentication.getPrincipal(); if (principal instanceof User) { return (T) principal; } } return null; } /** * ????, ?. */ public static String getCurrentUserName() { Authentication authentication = getAuthentication(); if (authentication != null && authentication.getPrincipal() != null) { return authentication.getName(); } return ""; } /** * ??IP, ?. */ public static String getCurrentUserIp() { Authentication authentication = getAuthentication(); if (authentication != null) { Object details = authentication.getDetails(); if (details instanceof WebAuthenticationDetails) { WebAuthenticationDetails webDetails = (WebAuthenticationDetails) details; return webDetails.getRemoteAddress(); } } return ""; } /** * ?, ??true. */ public static boolean hasAnyRole(String[] roles) { Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); Collection<GrantedAuthority> granteds = authentication.getAuthorities(); for (String role : roles) { for (GrantedAuthority authority : granteds) { if (role.equals(authority.getAuthority())) { return true; } } } return false; } /** * UserDetails?Security Context. * * @param userDetails ??. * @param request ?IP??. */ public static void saveUserDetailsToContext(UserDetails userDetails, HttpServletRequest request) { PreAuthenticatedAuthenticationToken authentication = new PreAuthenticatedAuthenticationToken(userDetails, userDetails.getPassword(), userDetails.getAuthorities()); authentication.setDetails(new WebAuthenticationDetails(request)); SecurityContextHolder.getContext().setAuthentication(authentication); } /** * ?Authentication, ?SecurityContextnull. */ private static Authentication getAuthentication() { SecurityContext context = SecurityContextHolder.getContext(); if (context != null) { return context.getAuthentication(); } return null; } public static String getIpAddr(HttpServletRequest request) { String ip = request.getHeader("x-forwarded-for"); if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("Proxy-Client-IP"); //System.out.println(ip); } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("WL-Proxy-Client-IP"); //System.out.println(ip); } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getRemoteAddr(); //System.out.println(ip); } return ip; } }