`

Acegi获取用户信息

阅读更多
Java代码 复制代码
  1. import org.acegisecurity.Authentication;   
  2. import org.acegisecurity.context.SecurityContext;   
  3. import org.acegisecurity.context.SecurityContextHolder;   
  4. import org.acegisecurity.ui.WebAuthenticationDetails;   
  5. import org.acegisecurity.userdetails.UserDetails;   
  6.   
  7. public class ThreadLocaTest {   
  8.     public static String getUsername() {   
  9.         SecurityContext ctx = SecurityContextHolder.getContext();   
  10.         if (ctx != null) {   
  11.             Authentication auth = ctx.getAuthentication();   
  12.             if (auth != null) {   
  13.                 Object principal = auth.getPrincipal();   
  14.                 if (principal instanceof UserDetails) {   
  15.                     return ((UserDetails) principal).getUsername();   
  16.                 } else {   
  17.                     return principal.toString();   
  18.                 }   
  19.             }   
  20.         }   
  21.         return null;   
  22.     }   
  23.   
  24.     public static String getSessionID() {   
  25.         SecurityContext ctx = SecurityContextHolder.getContext();   
  26.         if (ctx != null) {   
  27.             if (ctx instanceof SecurityContext) {   
  28.                 SecurityContext sc = (SecurityContext) ctx;   
  29.                 Authentication auth = sc.getAuthentication();   
  30.                 if (auth != null) {   
  31.                     Object details = auth.getDetails();   
  32.                     if (details instanceof WebAuthenticationDetails) {   
  33.                         return ((WebAuthenticationDetails) details).getSessionId();   
  34.                     } else {   
  35.                         return null;   
  36.                     }   
  37.                 }   
  38.             }   
  39.         }   
  40.         return null;   
  41.     }   
  42. }  
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

Java代码 复制代码
  1. /**  
  2.  * Get current user which stored in session You must set a user when using junit test  
  3.  * @return IUserDetails  
  4.  */  
  5. public static IUserDetails getUser() {   
  6.     // if not in unit test environment, get the current user using acegi   
  7.     if ((SecurityContextHolder.getContext() == null)   
  8.             || !(SecurityContextHolder.getContext() instanceof SecurityContext)   
  9.             || (((SecurityContext) SecurityContextHolder.getContext())   
  10.                     .getAuthentication() == null)) {   
  11.         return null;   
  12.     }   
  13.     Authentication auth = SecurityContextHolder.getContext().getAuthentication();   
  14.     if (auth.getPrincipal() == null) {   
  15.         return null;   
  16.     }   
  17.     IUserDetails user = null;   
  18.     if (auth.getPrincipal() instanceof IUserDetails) {   
  19.         user = (IUserDetails) auth.getPrincipal();   
  20.     }   
  21.     return user;   
  22. }  
分享到:
评论

相关推荐

    spring security 安全权限管理手册

    获取当前用户信息 7、自定义访问拒绝页面 8、动态管理资源结合自定义登录页面 9、 Spring Security 与 CAS整合 配置JA-SIG 配置Spring Security 为CAS配置SSL 10、标签的使用 11、自动登录 12、防御会话伪造 13...

    JAVA上百实例源码以及开源项目源代码

     //给客户发一个感谢消息,消息驱动Bean必须实现两个接口MessageDrivenBean和MessageListener  在对象创建的过程中将被容器调用,onMessage函数方法接收消息参数,将其强制转型为合适的消息类型,同时打印出消息...

    JAVA上百实例源码以及开源项目

     //给客户发一个感谢消息,消息驱动Bean必须实现两个接口MessageDrivenBean和MessageListener  在对象创建的过程中将被容器调用,onMessage函数方法接收消息参数,将其强制转型为合适的消息类型,同时打印出消息...

    java开源包1

    3、连接复用,因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换...

    java开源包11

    3、连接复用,因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换...

    java开源包2

    3、连接复用,因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换...

    java开源包3

    3、连接复用,因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换...

    java开源包6

    3、连接复用,因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换...

    java开源包5

    3、连接复用,因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换...

    java开源包10

    3、连接复用,因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换...

    java开源包4

    3、连接复用,因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换...

    java开源包8

    3、连接复用,因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换...

    java开源包7

    3、连接复用,因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换...

    java开源包9

    3、连接复用,因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换...

    java开源包101

    3、连接复用,因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换...

    Java资源包01

    3、连接复用,因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换...

Global site tag (gtag.js) - Google Analytics