zoukankan      html  css  js  c++  java
  • spring-security(2)

    记录一下spring security的配置

    配置详解

    <?xml version="1.0" encoding="UTF-8"?>
    <beans:beans xmlns="http://www.springframework.org/schema/security"
                 xmlns:beans="http://www.springframework.org/schema/beans"
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
                            http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security.xsd">
    
        <!-- 指定登录页面不拦截 -->
        <http security="none" pattern="/login.htm"/>
    
        <http auto-config="true">
            <!--
                login-page  指定登录页面
                username-parameter  登录的用户名,默认是“j_username”
                password-parameter  登录的密码,默认是“j_password”
                login-processing-url  登录提交的页面,默认是“/j-spring-security-check”
                default-target-url  指定登录成功后跳转的界面
                authentication-success-handler-ref  指定登录成功后调用的服务,这里指定后default-target-url就不生效, AuthenticationSuccessHandler
                authentication-failure-url 指定登录失败后跳转的界面
                authentication-failure-handler-ref="authenticationFailHandler" 指定登录失败后调用的服务,这里指定后authentication-failure-url就不生效, SimpleUrlAuthenticationFailureHandler
            -->
            <form-login
                    login-page="/login.htm"
                    username-parameter="username"
                    password-parameter="password"
                    login-processing-url="/spring-security-check"
                    default-target-url="/user/welcome.htm"
                    authentication-success-handler-ref="authenticationSuccessHandler"
                    authentication-failure-url="/user/fail.htm"
                    authentication-failure-handler-ref="authenticationFailHandler"
            />
    
            <!--禁用CSRF保护功能 默认开启-->
            <csrf disabled="true"/>
    
            <!--
            退出登录配置
                logout-url:退出登录提交的页面,默认j_spring_security_logout
                success-handler-ref: 成功退出登录的事件 LogoutSuccessHandler
            -->
            <logout logout-url="/spring_security_logout" success-handler-ref="logoutSuccessHandler" />
    
            <!--intercept-url定义了一个权限控制的规则。
                    pattern:进行权限控制的url
                    access:需要什么权限,以逗号分隔的角色列表,只需拥有其中的一个角色就能成功访问
                -->
            <intercept-url pattern="/" access="hasRole('role1')" />
            <intercept-url pattern="/*.htm" access="hasRole('role1')"/>
            <intercept-url pattern="/**/.htm" access="hasRole('role1')"/>
        </http>
    
        <!--开启权限注解支持 -->
        <global-method-security secured-annotations="enabled" jsr250-annotations="enabled"/>
    
        <beans:bean id="userService" class="com.yitop.feng.service.UserService"/>
    
        <beans:bean id="authenticationSuccessHandler" class="com.yitop.feng.service.security.AuthenticationSuccessHandlerImpl" />
    
        <beans:bean id="authenticationFailHandler" class="com.yitop.feng.service.security.AuthenticationFailHandlerImpl" />
    
        <!--
        authentication-manager元素指定了一个AuthenticationManager,其需要一个AuthenticationProvider来进行真正的认证,
        默认情况下authentication-provider对应一个UserDetailsService来获取用户信息(即查询数据库)。
        -->
        <authentication-manager>
            <authentication-provider user-service-ref="userService">
                <!--
                hash    指定密码加密方式 plaintext sha sha-256 md4 md5 {sha} {ssha}
                        加密算法  PasswordEncoder  实现类 plaintext PlaintextPasswordEncoder
                        sha                          ShaPasswordEncoder
                        sha-256                  ShaPasswordEncoder,使用时new ShaPasswordEncoder(256)
                        md4                         Md4PasswordEncoder
                        md5                         Md5PasswordEncoder
                        {sha}                       LdapShaPasswordEncoder
                        {ssha}                     LdapShaPasswordEncoder
    
                base64  表示是否需要对加密后的密码使用BASE64进行编码,默认是false
                -->
                <password-encoder hash="md5" base64="true"/>
            </authentication-provider>
        </authentication-manager>
    </beans:beans>
    

    url权限控制表达式

    hasRole([role])                 当前用户是否拥有指定角色。
    hasAnyRole([role1,role2])       多个角色是一个以逗号进行分隔的字符串。如果当前用户拥有指定角色中的任意一个则返回true。
    hasAuthority([auth])            等同于hasRole
    hasAnyAuthority([auth1,auth2])  等同于hasAnyRole
    Principle                       代表当前用户的principle对象
    authentication                  直接从SecurityContext获取的当前Authentication对象
    permitAll                       允许所有
    denyAll                         拒绝所有
    

    注解功能

    <!-- 开启注解功能 -->
    <security:global-method-security jsr250-annotations="enabled"/>
    
    @RolesAllowed({"ROLE_USER", "ROLE_ADMIN"})
    public User find(int id) {
      System.out.println("find user by id............." + id);
      return null;
    }
    
    //允许ROLE_USER或ROLE_ADMIN使用find方法
    
    //@PermitAll 允许所有  
    //@DenyAll  拒绝所有
  • 相关阅读:
    秦腾与教学评估【前缀和+二分】
    c++中成员函数声明时const得作用
    分形【递归】
    飞行兄弟【二进制枚举+异或】
    爬取4k图片网图片
    爬虫爬取博客园文章的文字【练手】
    【YBTOJ】求 f 函数
    【YBTOJ】划分数列
    【学习笔记】高斯消元法
    【Luogu P4588】 [TJOI2018]数学计算
  • 原文地址:https://www.cnblogs.com/andyfengzp/p/6635124.html
Copyright © 2011-2022 走看看