Acegi框架通过ThreadLocal存放用户信息,因此可以通过以下函数获取相关信息:

/** *//**
* 取得当前用户名
* @return
*/

public static String getUsername()
{
Context context=ContextHolder.getContext();

if(context!=null)
{

if(context instanceof SecureContext)
{
SecureContext sc=(SecureContext)context;
Authentication auth=sc.getAuthentication();

if(auth!=null)
{
Object principal=auth.getPrincipal();

if(principal instanceof UserDetails)
{
return ((UserDetails)principal).getUsername();

}else
{
return principal.toString();
}
}
}
}
return null;
}

/** *//**
* 取得当前用户密码
* @return
*/

public static String getPassword()
{
Context context=ContextHolder.getContext();

if(context!=null)
{

if(context instanceof SecureContext)
{
SecureContext sc=(SecureContext)context;
Authentication auth=sc.getAuthentication();

if(auth!=null)
{
Object principal=auth.getPrincipal();

if(principal instanceof UserDetails)
{
return ((UserDetails)principal).getPassword();

}else
{
return null;
}
}
}
}
return null;
}

/** *//**
* 取得当前用户session id
* @return sessionid or null
*/

public static String getSessionID()
{
Context context=ContextHolder.getContext();

if(context!=null)
{

if(context instanceof SecureContext)
{
SecureContext sc=(SecureContext)context;
Authentication auth=sc.getAuthentication();

if(auth!=null)
{
Object details=auth.getDetails();

if(details instanceof WebAuthenticationDetails)
{
return ((WebAuthenticationDetails)details).getSessionId();

}else
{
return null;
}
}
}
}
return null;
}

/** *//**
* 取得当前用户名
* @return
*/
public static String getUsername()
{
Context context=ContextHolder.getContext();
if(context!=null)
{
if(context instanceof SecureContext)
{
SecureContext sc=(SecureContext)context;
Authentication auth=sc.getAuthentication();
if(auth!=null)
{
Object principal=auth.getPrincipal();
if(principal instanceof UserDetails)
{
return ((UserDetails)principal).getUsername();
}else
{
return principal.toString();
}
}
}
}
return null;
}
/** *//**
* 取得当前用户密码
* @return
*/
public static String getPassword()
{
Context context=ContextHolder.getContext();
if(context!=null)
{
if(context instanceof SecureContext)
{
SecureContext sc=(SecureContext)context;
Authentication auth=sc.getAuthentication();
if(auth!=null)
{
Object principal=auth.getPrincipal();
if(principal instanceof UserDetails)
{
return ((UserDetails)principal).getPassword();
}else
{
return null;
}
}
}
}
return null;
}
/** *//**
* 取得当前用户session id
* @return sessionid or null
*/
public static String getSessionID()
{
Context context=ContextHolder.getContext();
if(context!=null)
{
if(context instanceof SecureContext)
{
SecureContext sc=(SecureContext)context;
Authentication auth=sc.getAuthentication();
if(auth!=null)
{
Object details=auth.getDetails();
if(details instanceof WebAuthenticationDetails)
{
return ((WebAuthenticationDetails)details).getSessionId();
}else
{
return null;
}
}
}
}
return null;
}
本文介绍了如何使用Acegi框架从ThreadLocal中获取用户的详细信息,包括用户名、密码及session ID等关键数据。
430

被折叠的 条评论
为什么被折叠?



