zoukankan      html  css  js  c++  java
  • spring security 3中的10个典型用法小结

    spring security 3比较庞大,但功能很强,下面小结下spring security 3中值得 

    注意的10个典型用法 

    1)多个authentication-provide可以同时使用 

    Java代码  收藏代码
    1. <authentication-manager alias='authenticationManager'>  
    2.   <authentication-provider>  
    3.    <user-service>  
    4.     <user authorities='ROLE_GUEST' name='guest' password=''/>  
    5.    </user-service>  
    6.   </authentication-provider>  
    7.   <authentication-provider>  
    8.    <jdbc-user-service data-source-ref='dataSource'/>  
    9.   </authentication-provider>  
    10.  </authentication-manager>  


    2 传统的<security:http> 
     
    Java代码  收藏代码
    1. <security:http>  
    2.  <security:intercept-url pattern='/admin/**' access='hasRole('ROLE_ADMIN')'/>  
    3.  <security:intercept-url pattern='/account/**' access='hasRole('ROLE_USER')' />  
    4.  <security:intercept-url pattern='/**' access='hasRole('ROLE_ANONYMOUS')' />  
    5.  <!-- other elements removed for clarity -->  
    6. </security:http>  


    3 可以使用一大堆密码加密器: 
       aseDigestPasswordEncoder 
    BasePasswordEncoder 
    LdapShaPasswordEncoder 
    Md4PasswordEncoder, 
    Md5PasswordEncoder 
    MessageDigestPasswordEncoder 
    MessageDigestPasswordEncoder 
    PlaintextPasswordEncoder 
    ShaPasswordEncoder 

    4 SPRING security的标签 
      
    Java代码  收藏代码
    1. <sec:authorize access='hasRole('supervisor')'>  
    2. This content will only be visible to users who have  
    3. the 'supervisor' authority in their list of <tt>GrantedAuthority</tt>s.  
    4. </sec:authorize>  


      这是根据角色判断是否显示 
      
    还可以根据URL判断是否显示 
     
    Java代码  收藏代码
    1. <sec:authorize url='/admin'>  
    2. This content will only be visible to users who are authorized to send requests to the '/admin' URL.  
    3. </sec:authorize>  


    5 方法级的鉴别 
       @PreAuthorize  @PostAuthorize  @Secure 

      要启用上面三者,要 
    <global-method-security pre-post-annotations='enabled' /> 

    这三个是在方法调用前,先鉴别是否有权限使用,比如 
      
    Java代码  收藏代码
    1. public interface IUserService   
    2.   
    3. {  
    4. @PreAuthorize("hasRole('ROLE_USER')")  
    5.   
    6.  public void changePassword(String username, password);  
    7. }  


       感觉这个其实不是很常用 
    6 同5,可以使用JSR-250 注解去做 
       <global-method-security jsr250-annotations=”enabled”/> 

      @RolesAllowed({“ROLE_USER”,”ROLE_ADMIN”}) 
    @PermitAll 
    @DenyAll 

    这样使用: 
        @RolesAllowed({"ROLE_ADMIN","ROLE_USER"}) 
    public void deleteUser(String username); 
       这个东西反正没用到,具体见手册 


    7 配置open-id,步骤 
       
    Java代码  收藏代码
    1. <form action='j_spring-openid-security-check' method='post'>  
    2.  <label for='openid_idenifier'>Login</label>:   
    3.  <input id='openid_identifier' name='openid_identifier' type='text'/>  
    4.  <input type='submit' value='Login' />  
    5. </form>  


       <http auto-config='true'> 
    <openid-login/> 

    </http> 
       当然要加上:spring-security-openid.jar 

    8 spring secruity能使用ldap 
      <ldap-server ldif='classpath:my-ldif-file.ldif' id='localserver' /> 

    当然要加上:spring-security-openid.jar 

    9 使用远程 ldap-server 
       <ldap-server url='ldap://myServer/dc=captaindebug,dc=com:389' id='ldapExternal' 
      manager-dn='uid=admin,ou=users,ou=systems' manager-password='s3cret'/> 

      8和9还没用过,估计配置起来还有更多东西 

    10 使用https 
       <http auto-config='true' use-expressions='true'> 
        <intercept-url pattern='/login' requires-channel='https'/> 
        
    </https> 

      这个比较简单,用requires-channel='https' 
  • 相关阅读:
    面试汇总
    Windows 环境下的 protoc 安装(转)
    Hbase 元数据一致性检查(转)
    Slow ReadProcessor&amp;Error Slow BlockReceiver错误日志分析(转)
    Hbase CMS GC 调优。
    [技术]排查线上问题
    crontab 误删恢复
    Hbase balancer RSgroup shell 脚本
    Hbase运维手册(1)
    Presto JVM.config
  • 原文地址:https://www.cnblogs.com/yanduanduan/p/5190786.html
Copyright © 2011-2022 走看看