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' 

你可能感兴趣的:(spring security 3中的10个典型用法小结)