zoukankan      html  css  js  c++  java
  • Spring Security教程之自定义Spring Security默认的403页面

    在最新的Spring Security教程-Spring Security实现访问控制教程中,如果没有授权的用户访问加密的页面,默认的403页面就会展示

    在本次教程中,我们教你两种自定义Spring Security 默认的403页面的方法

    1.使用access-denied-handler标签

    最简单的方法就是使用access-denied-handler标签,在“error-page”设置你自己的403页面

    1
    2
    3
    4
     <http auto-config="true">
        <intercept-url pattern="/admin*" access="ROLE_ADMIN" />
        <access-denied-handler error-page="404"/>
      </http>

    2.实现AccessDeniedHandler类

    第二种方法就是创建一个类并实现AccessDeniedHandler类,重写“handle()”方法,在里面设置你自己的访问逻辑

    MyAccessDeniedHandler.java 

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    package com.mkyong.common.handler;
      
    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import org.springframework.security.access.AccessDeniedException;
    import org.springframework.security.web.access.AccessDeniedHandler;
      
    public class MyAccessDeniedHandler implements AccessDeniedHandler {
        private String accessDeniedUrl;
      
        public MyAccessDeniedHandler() {
        }
      
        public MyAccessDeniedHandler(String accessDeniedUrl) {
            this.accessDeniedUrl = accessDeniedUrl;
        }
      
        @Override
        public void handle(HttpServletRequest request,
            HttpServletResponse response,
            AccessDeniedException accessDeniedException) throws IOException,
            ServletException {
      
           response.sendRedirect(accessDeniedUrl);
           request.getSession().setAttribute("message",
            "You do not have permission to access this page!");
      
        }
      
        public String getAccessDeniedUrl() {
            return accessDeniedUrl;
        }
      
        public void setAccessDeniedUrl(String accessDeniedUrl) {
            this.accessDeniedUrl = accessDeniedUrl;
        }
    }

    3.例子

    下面假设是你自定义的403页面

    403.jsp

    1
    2
    3
    4
    5
    6
    <html>
    <body>
        <h1>HTTP Status 403 - Access is denied</h1>
        <h3>Message : ${message}</h3>    
    </body>
    </html>

    现在假如没有权限的用户访问受保护的页面,你自定义的403页面就会展示:

    原创文章,转载请注明出处:http://www.it161.com/article/javaDetail?articleid=140113232712

    更多原创内容,请访问:http://www.it161.com/

  • 相关阅读:
    unreal python commandlet print log
    三维空间坐标系变换公式
    Android Volley初探:Volley基本用法
    Android View学习笔记(四):Scroller的原理剖析及使用(下)
    Android View学习笔记(三):Scroller的原理剖析及使用(上)
    Android View学习笔记(二):View滑动方式总结
    Android View学习笔记(一):View基础知识
    获取NavigationBar状态与高度
    解决RecyclerView.getChildAt(Position)崩溃
    RecyclerView瀑布流的那些坑
  • 原文地址:https://www.cnblogs.com/youqishini/p/3531906.html
Copyright © 2011-2022 走看看