`
weishuwei
  • 浏览: 326956 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

自定义acegi的Authentication对象

阅读更多
项目中有时需要自己定义一下acegi的Authentication对象,经过分析源码,现给出实现代码如下所示:
  1. @Override  
  2.     public String execute() throws Exception {   
  3.         username="admin001";   
  4.         password="password";   
  5.         UsernamePasswordAuthenticationToken authen = new UsernamePasswordAuthenticationToken(username, password);   
  6.         HttpServletRequest request = ServletActionContext.getRequest();   
  7.         HttpServletResponse response = ServletActionContext.getResponse();   
  8.         // 保存用户名到session里   
  9.         request.getSession().setAttribute(ACEGI_SECURITY_LAST_USERNAME_KEY, username);   
  10.         WebAuthenticationDetails webdetails=new WebAuthenticationDetails(request);   
  11.         //注意:这里setDetails的对象一定要是WebAuthenticationDetails   
  12.         authen.setDetails(webdetails);   
  13.         //这里验证不通过会返回null对象   
  14.         Authentication auth1=authenticationManager.doAuthentication(authen);   
  15.         SecurityContextHolder.getContext().setAuthentication(auth1);   
  16.         rememberMeServices.loginSuccess(request, response, auth1);   
  17.         if(auth1.getDetails()!=null ){   
  18.             System.out.println("auth1details");   
  19.             if(auth1.getDetails() instanceof WebAuthenticationDetails){   
  20.                 WebAuthenticationDetails dt=(WebAuthenticationDetails)auth1.getDetails();   
  21.                 System.out.println(dt.getSessionId());   
  22.             }   
  23.         }   
  24.         System.out.println("认证是否通过: "+auth1.isAuthenticated());   
  25.         Object principal=SecurityContextHolder.getContext().getAuthentication().getPrincipal();   
  26.         if(principal instanceof UserDetails){   
  27.             UserDetails user=(UserDetails)principal;   
  28.             if(this.userCache.getUserFromCache(user.getUsername())!=null){   
  29.                 System.out.println("usercache is not null");   
  30.             }else{   
  31.                 this.userCache.putUserInCache(user);   
  32.             }   
  33.         }   
  34.         if (UserSecurty.getUserDetails() != null) {   
  35.             System.out.println(UserSecurty.getUserName());   
  36.             System.out.println(UserSecurty.getUserDetails().getPassword());   
  37.             System.out.println(UserSecurty.getUserDetails().getAuthorities());   
  38.             for(GrantedAuthority authority:UserSecurty.getUserDetails().getAuthorities()){   
  39.                 System.out.println("权限: "+authority);   
  40.             }   
  41.         }   
  42.         return NONE;   
  43.   
  44.     }  
分享到:
评论

相关推荐

    基于spring的Acegi安全框架认证与授权的分析及扩展.pdf

    它接受Authentication对象作为输入,并返回经过认证的Authentication对象作为输出。 5. **AccessDecisionManager**(访问决策管理器): 根据传入的Object(通常是方法或web请求)和当前的Authentication对象来做出...

    acegi安全策略与CAS整合

    AceGI安全策略与CAS(Central Authentication Service)整合是企业级应用中常见的安全解决方案,它能够为Web应用程序提供统一的身份验证和授权服务。本文档旨在详细阐述这一整合过程,包括配置步骤、所需资源以及...

    Acegi_使用.doc

    - **AuthenticationManager**:负责验证存储在ContextHolder中的Authentication对象的有效性。 - **AccessDecisionManager**:决定用户是否有权限执行某个特定操作。 - **RunAsManager**:在执行特定操作时,根据...

    Acegi

    - **DAOAuthenticationProvider**:通过数据访问对象(DAO)进行用户认证,支持自定义认证逻辑。 - **Java Authentication and Authorization Service (JAAS) Provider**:整合JAAS,提供更复杂的认证和授权功能。...

    acegi-security源码包

    它接收认证请求(Authentication)并返回一个认证结果(Authentication)。Acegi Security支持多种认证策略,如基于数据库的用户名/密码验证,或者通过LDAP服务进行身份验证。 2. **AccessDecisionManager**: 这个...

    菜鸟-手把手教你把Acegi应用到实际项目中(1.2)

    Authentication对象包含用户的身份验证数据,如用户名、密码等;Authorization则是处理权限检查的部分,确保用户只能访问他们被授权的资源。 在实际项目中,你需要完成以下步骤来集成Acegi: 1. **添加依赖**:...

    Acegi安全系统介绍.doc

    - **接口定义:**`org.acegisecurity.AuthenticationManager`定义了一个名为`authenticate(Authentication authentication)`的方法,该方法接收一个`Authentication`对象作为参数,并尝试验证用户身份。 ##### 3. ...

    Acegi(四):Acegi初体验及初解剖

    这可能涉及到SecurityContext、Authentication对象、ProviderManager和AuthenticationProvider等核心组件。理解这些概念对于定制安全策略或解决安全问题至关重要。 标签"源码"暗示博主可能会分析一些关键类的实现,...

    acegi实现用户权限

    为了实现用户认证,AceGI使用Authentication对象来封装用户的身份信息,包括用户名、密码和其他安全属性。认证过程通常涉及一个AuthenticationProvider,它负责验证用户提供的凭证(如用户名和密码)。AceGI提供了...

    acegisecurity-1.0.7.zip_.acegisecuri_acegi security 1.0.7_acegi

    身份验证过程通常涉及验证用户凭证,并创建一个Authentication对象,该对象包含了已验证的用户信息。 2. **授权**:一旦用户被成功认证,Acegi Security将执行授权检查。授权基于策略,可以是基于角色的,也可以是...

    springside 玩转acegi

    3. 这个过滤器将这些数据封装成一个`Authentication`对象,该对象包含了要验证的身份信息。 4. `Authentication`对象被传递给`AuthenticationManager`,这是一个接口,负责实际的认证逻辑。`AuthenticationManager`...

    acegi spring 例子

    一旦验证成功,Acegi会创建一个Authentication对象,其中包含用户的标识、权限和其他安全相关信息。这个对象会被Spring Security的SecurityContextHolder保存下来,后续的每个请求都会检查这个上下文,以确定是否...

    Acegi-security-samples-tutorial-1.0.7.zip 实例代码解析

    - `Authentication`对象的生命周期,包括如何创建、存储和更新用户会话。 此外,Acegi Security还支持密码加密、会话管理、CSRF防护等功能。通过这个教程,开发者不仅可以了解Acegi Security的基本用法,还能深入...

    集成ACEGI 进行权限控制.rar

    如果认证成功,系统将创建一个Authentication对象,包含用户信息和权限。如果认证失败,系统会返回一个未认证的响应。 4. **授权过程** 授权通常基于角色,用户的角色决定了他们可以访问哪些资源。...

    acegi实例

    1. **权限模型**:Acegi基于`Authentication`和`Authorization`的概念。`Authentication`处理用户身份验证,即确认用户是谁;`Authorization`处理权限验证,决定用户是否被授权执行某个操作。Acegi使用`Principal`...

    使用acegi控制用户权限实例

    这通常涉及到从数据库中检索用户信息,并创建相应的Authentication对象。 最后,为了让Acegi Security生效,我们需要将它集成到Web应用的过滤器链中。在web.xml文件中,我们需要配置Acegi Security提供的过滤器,如...

    acegi结合ssh实用列子

    Acegi提供了一套强大的访问控制机制,包括身份验证(Authentication)、授权(Authorization)以及会话管理。它可以处理基于角色的访问控制(RBAC),支持多种认证方式如用户名/密码、数字证书等,并且可以对HTTP...

    acegi学习指南以及例子

    4. 验证成功后,Authentication对象被放入SecurityContext,用户被标记为已认证。 **授权机制**: Acegi使用AccessDecisionManager和AccessDecisionVoter来决定用户是否有权访问特定资源。AccessDecisionManager...

    Spring的ACEGI的应用

    用户的角色集合会被存储在`Authentication`对象中,通过`hasRole()`或`hasAnyRole()`方法进行角色检查,而权限检查则可以使用`hasPermission()`方法。 **6. 会话管理** Acegi Security还提供了强大的会话管理功能,...

Global site tag (gtag.js) - Google Analytics