项目中有时需要自己定义一下acegi的Authentication对象,经过分析源码,现给出实现代码如下所示:
- @Override
- public String execute() throws Exception {
- username="admin001";
- password="password";
- UsernamePasswordAuthenticationToken authen = new UsernamePasswordAuthenticationToken(username, password);
- HttpServletRequest request = ServletActionContext.getRequest();
- HttpServletResponse response = ServletActionContext.getResponse();
-
- request.getSession().setAttribute(ACEGI_SECURITY_LAST_USERNAME_KEY, username);
- WebAuthenticationDetails webdetails=new WebAuthenticationDetails(request);
-
- authen.setDetails(webdetails);
-
- Authentication auth1=authenticationManager.doAuthentication(authen);
- SecurityContextHolder.getContext().setAuthentication(auth1);
- rememberMeServices.loginSuccess(request, response, auth1);
- if(auth1.getDetails()!=null ){
- System.out.println("auth1details");
- if(auth1.getDetails() instanceof WebAuthenticationDetails){
- WebAuthenticationDetails dt=(WebAuthenticationDetails)auth1.getDetails();
- System.out.println(dt.getSessionId());
- }
- }
- System.out.println("认证是否通过: "+auth1.isAuthenticated());
- Object principal=SecurityContextHolder.getContext().getAuthentication().getPrincipal();
- if(principal instanceof UserDetails){
- UserDetails user=(UserDetails)principal;
- if(this.userCache.getUserFromCache(user.getUsername())!=null){
- System.out.println("usercache is not null");
- }else{
- this.userCache.putUserInCache(user);
- }
- }
- if (UserSecurty.getUserDetails() != null) {
- System.out.println(UserSecurty.getUserName());
- System.out.println(UserSecurty.getUserDetails().getPassword());
- System.out.println(UserSecurty.getUserDetails().getAuthorities());
- for(GrantedAuthority authority:UserSecurty.getUserDetails().getAuthorities()){
- System.out.println("权限: "+authority);
- }
- }
- return NONE;
-
- }
分享到:
相关推荐
它接受Authentication对象作为输入,并返回经过认证的Authentication对象作为输出。 5. **AccessDecisionManager**(访问决策管理器): 根据传入的Object(通常是方法或web请求)和当前的Authentication对象来做出...
AceGI安全策略与CAS(Central Authentication Service)整合是企业级应用中常见的安全解决方案,它能够为Web应用程序提供统一的身份验证和授权服务。本文档旨在详细阐述这一整合过程,包括配置步骤、所需资源以及...
- **AuthenticationManager**:负责验证存储在ContextHolder中的Authentication对象的有效性。 - **AccessDecisionManager**:决定用户是否有权限执行某个特定操作。 - **RunAsManager**:在执行特定操作时,根据...
- **DAOAuthenticationProvider**:通过数据访问对象(DAO)进行用户认证,支持自定义认证逻辑。 - **Java Authentication and Authorization Service (JAAS) Provider**:整合JAAS,提供更复杂的认证和授权功能。...
它接收认证请求(Authentication)并返回一个认证结果(Authentication)。Acegi Security支持多种认证策略,如基于数据库的用户名/密码验证,或者通过LDAP服务进行身份验证。 2. **AccessDecisionManager**: 这个...
Authentication对象包含用户的身份验证数据,如用户名、密码等;Authorization则是处理权限检查的部分,确保用户只能访问他们被授权的资源。 在实际项目中,你需要完成以下步骤来集成Acegi: 1. **添加依赖**:...
- **接口定义:**`org.acegisecurity.AuthenticationManager`定义了一个名为`authenticate(Authentication authentication)`的方法,该方法接收一个`Authentication`对象作为参数,并尝试验证用户身份。 ##### 3. ...
这可能涉及到SecurityContext、Authentication对象、ProviderManager和AuthenticationProvider等核心组件。理解这些概念对于定制安全策略或解决安全问题至关重要。 标签"源码"暗示博主可能会分析一些关键类的实现,...
为了实现用户认证,AceGI使用Authentication对象来封装用户的身份信息,包括用户名、密码和其他安全属性。认证过程通常涉及一个AuthenticationProvider,它负责验证用户提供的凭证(如用户名和密码)。AceGI提供了...
身份验证过程通常涉及验证用户凭证,并创建一个Authentication对象,该对象包含了已验证的用户信息。 2. **授权**:一旦用户被成功认证,Acegi Security将执行授权检查。授权基于策略,可以是基于角色的,也可以是...
3. 这个过滤器将这些数据封装成一个`Authentication`对象,该对象包含了要验证的身份信息。 4. `Authentication`对象被传递给`AuthenticationManager`,这是一个接口,负责实际的认证逻辑。`AuthenticationManager`...
一旦验证成功,Acegi会创建一个Authentication对象,其中包含用户的标识、权限和其他安全相关信息。这个对象会被Spring Security的SecurityContextHolder保存下来,后续的每个请求都会检查这个上下文,以确定是否...
- `Authentication`对象的生命周期,包括如何创建、存储和更新用户会话。 此外,Acegi Security还支持密码加密、会话管理、CSRF防护等功能。通过这个教程,开发者不仅可以了解Acegi Security的基本用法,还能深入...
如果认证成功,系统将创建一个Authentication对象,包含用户信息和权限。如果认证失败,系统会返回一个未认证的响应。 4. **授权过程** 授权通常基于角色,用户的角色决定了他们可以访问哪些资源。...
1. **权限模型**:Acegi基于`Authentication`和`Authorization`的概念。`Authentication`处理用户身份验证,即确认用户是谁;`Authorization`处理权限验证,决定用户是否被授权执行某个操作。Acegi使用`Principal`...
这通常涉及到从数据库中检索用户信息,并创建相应的Authentication对象。 最后,为了让Acegi Security生效,我们需要将它集成到Web应用的过滤器链中。在web.xml文件中,我们需要配置Acegi Security提供的过滤器,如...
Acegi提供了一套强大的访问控制机制,包括身份验证(Authentication)、授权(Authorization)以及会话管理。它可以处理基于角色的访问控制(RBAC),支持多种认证方式如用户名/密码、数字证书等,并且可以对HTTP...
4. 验证成功后,Authentication对象被放入SecurityContext,用户被标记为已认证。 **授权机制**: Acegi使用AccessDecisionManager和AccessDecisionVoter来决定用户是否有权访问特定资源。AccessDecisionManager...
用户的角色集合会被存储在`Authentication`对象中,通过`hasRole()`或`hasAnyRole()`方法进行角色检查,而权限检查则可以使用`hasPermission()`方法。 **6. 会话管理** Acegi Security还提供了强大的会话管理功能,...