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;
}
分享到:
相关推荐
`DaoAuthenticationProvider`将从数据源获取用户信息,而`RoleVoter`将根据用户的角色进行授权判断。 在`acegi-lib2`这个压缩包中,可能包含了Acegi的库文件和其他相关资源,比如示例代码或配置文件。为了进一步...
Acegi可以从登录表单、Cookie等来源获取用户信息,自动生成Authentication实例。Authentication的getPrincipal()方法返回一个代表用户的对象,通常可以转化为UserDetails类型。 Acegi框架的这种设计使安全控制变得...
2. **授权(Authorization)**:在Acegi中,授权是指确定一个已认证的用户是否有权限访问特定的资源或执行某些操作。它可以基于角色、URL、方法或者更复杂的规则进行控制。 3. **会话管理(Session Management)**...
4. **UserDetailsService**: 提供用户详细信息的服务,通常从数据库或其他数据源获取用户信息。 5. **RoleHierarchy**: 角色层级关系,可以定义角色之间的继承关系。 在实际应用中,我们首先需要在Spring配置文件中...
开发者还可以通过实现自定义的UserDetailsService接口来获取和验证用户信息,这使得AceGI能够与现有的用户存储系统(如数据库或LDAP)集成。 另外,AceGI提供了丰富的日志和审计功能,可以帮助开发者追踪和分析安全...
如果需要使用数据库存储用户信息,需要配置数据库连接和验证逻辑。 2.4 HTTPS验证配置: 为了增强安全性,通常会配置CAS服务器使用HTTPS协议,这涉及到证书的配置和SSL设置。 2.5 自定义页面: 根据需求,可能需要...
Acegi Security提供了一系列安全服务,如RememberMe服务,可以记住用户的登录状态,使用户在一段时间内无需重新登录。另外,还包括了密码加密服务,确保密码在存储和传输过程中的安全性。 五、与其他Spring组件的...
标题“spring的acegi应用”指的是在Spring框架中使用Acegi安全模块进行权限管理和用户认证的一个主题。Acegi是Spring早期的一个安全组件,后来发展成为Spring Security,是Spring生态系统中的重要部分,用于提供全面...
2. **UserDetailsService**: 这个接口用于获取关于用户的信息,包括用户名、密码以及角色等。通常,这些信息从数据库或其他持久化存储中加载。 3. **AccessDecisionManager**: 授权决策管理器决定是否允许用户访问...
Acegi Security Tiger 1.0.7 是一个用于Java Web应用程序的安全框架,它在Spring框架之上提供了一套全面...如果你正在使用或考虑使用Acegi Security,可能需要考虑升级到Spring Security以获取更好的安全性和社区支持。
Acegi Security是一个已退役的安全框架,它为Java平台上的Spring框架提供了全面的身份验证和...因此,尽管Acegi Security在某些老项目中仍可能被使用,但新的开发工作应转向Spring Security,以获取更好的维护和更新。
这样,任何地方都可以通过 SecurityContextHolder 获取当前用户的信息。 4. **表达式式语言**:Acegi 提供了一个安全表达式语言,可以在控制器、视图层等处使用,用于动态决定是否允许执行某个操作。例如,`@...
- 用户认证的实现,包括定义`UserDetailsService`来获取用户信息,以及配置不同的认证提供者。 - 授权机制的设定,例如使用`AccessDecisionManager`和`AccessDecisionVoter`来决定是否允许访问。 - ACL(Access ...
4. **创建认证和授权逻辑**:编写实现Acegi接口的类,如`AuthenticationProvider`用于验证用户凭证,`UserDetailsService`用于加载用户信息。 5. **启动安全过滤器**:将Acegi的安全过滤器添加到Web应用的过滤器链...
`acegi-security--license.txt` 文件通常包含软件的许可协议信息,对于Acegi Security 1.0.4来说,这可能是Apache License Version 2.0,这是一个广泛使用的开源软件许可证,允许自由地使用、修改和分发软件,但要求...
4. **异常处理**:当认证或授权失败时,Acegi能够自定义异常处理逻辑,提供友好的错误信息给用户。 5. **安全事件监听**:系统可注册监听器,对登录、登出、权限检查失败等安全事件进行处理。 Resin是一款高性能的...
UserDetailsService允许自定义用户信息的加载方式,以便从数据库或其他数据源获取用户信息。 在实际项目中,Acegi不仅可以保护Web页面,还可以保护服务层的业务方法。教程中会展示如何使用Acegi的切面编程(AOP)...
- **记住我认证提供者**:`RememberMeAuthenticationProvider`通过cookie实现用户的身份验证,key值设置为`rememberMeUser`,可以方便地获取相应的cookie信息。 接下来配置了会话控制器`...