Spring Security 02

权限管理

配置不过滤的资源

  • 方法1
    <http pattern="/login.jsp" security="none"></http>html

  • 方法2
<sec:http auto-config="true">
     <intercept-url pattern="/login.jsp" access="IS_AUTHENTICATED_ANONYMOUSLY" />配置表示容许匿名用户访问
</sec:http>

配置须要赋予权限才能访问的资源

<http auto-config="true">
        <!-- 表示访问app.jsp时,须要ROLE_ADMIN权限 -->
        <intercept-url pattern="/adminpage.jsp" access="hasRole('ROLE_ADMIN')"></intercept-url>
        <!--表示访问任何资源都须要ROLE_USER权限。 -->
        <intercept-url pattern="/**" access="hasRole('ROLE_USER')"></intercept-url>
</http>

自定义登录登出页面

applicationContext-security.xml配置

<http auto-config="false" use-expressions="true">
        <!-- 具备ROLE_ADMIN权限的用户才能访问所有路径 -->
        <intercept-url pattern="/adminpage.jsp" access="hasRole('ROLE_ADMIN')"/>
        <!-- 具备ROLE_USER权限的用户才能访问所有路径 -->
        <intercept-url pattern="/**" access="hasRole('ROLE_USER')" />
        <form-login
            login-page="/login.jsp"
            login-processing-url="/j_spring_security_check"
            authentication-failure-url="/login.jsp"
            default-target-url="/index.jsp" />
        <csrf disabled="true" />
        <logout invalidate-session="true"
            logout-success-url="/login.jsp"
            logout-url="/j_spring_security_logout" />
</http>
  • auto-config="true"时使用默认的配置,会配置十个默认过滤器:SecurityContextPersistenceFilter、LogoutFilter、
    UsernamePasswordAuthenticationFilter、BasicAuthenticationFilter、RequestCacheAwareFilter、SecurityContextHolderAwareRequestFilter、
    AnonymousAuthenticationFilter、SessionManagementFilter、ExceptionTranslationFilter、FilterSecurityInterceptor
  1. login-page="/login.jsp" 表示使用login.jsp代替默认登录界面。
  2. login-processing-url="/j_spring_security_check" 使用spring-security 4.x版本必须添加该属性,表示登陆表单提交路径。
  3. authentication-failure-url="/login.jsp" 表示受权失败以后跳转到login.jsp界面。
  4. default-target-url="/index.jsp" 表示受权成功以后默认跳转到index.jsp界面。
  5. logout-url="/j_spring_security_logout" 表示退出操做要提交到的url。
  6. logout-success-url="/login.jsp" 表示退出操做成功后跳转到的界面。

页面

  • login.jsp
<html>
    <body>
        <form action="j_spring_security_check" method="POST">
            <input type="text" name="username"  /> </br> 
            <input type="password" name="password" /> </br> 
            <input type="submit" value="submit" />
        </form>
    </body>
</html>
  • index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
 
<!DOCTYPE html>
<html lang="en">
 
<html>
<body>
<h2>this is a user page </h2>
<a href="${pageContext.request.contextPath}/j_spring_security_logout">退出登录</a>
</body>
</html>
相关文章
相关标签/搜索