Spring Security:自定义403访问拒绝页面
时间:2020-02-23 14:36:00 来源:igfitidea点击:
在本教程中,我们将看到如何自定义403访问拒绝页面。
如果用户无权访问页面,那么它将显示默认的403页面,如下所示:
我们可以如下定制403页:
如果要配置自定义403访问拒绝页面,则有两种方法可以执行此操作。
- 使用访问拒绝处理程序错误页面
- 使用AccessDeniedHandler
使用访问拒绝处理程序错误页面
我们可以在Spring-security.xml中为spring-security.xml中的属性访问拒绝处理程序投入条目。
<http auto-config="true" use-expressions="true"> <access-denied-handler error-page="/403" ... other entries </http>
因此,如果用户无法访问页面,则将重定向到/403,我们可以在控制器类中处理403:
//for 403 access denied page
@RequestMapping(value = "/403", method = RequestMethod.GET)
public ModelAndView accesssDenied(Principal user) {
ModelAndView model = new ModelAndView();
if (user != null) {
model.addObject("msg", "Hi " + user.getName()
+ ", You can not access this page!");
} else {
model.addObject("msg",
"You can not access this page!");
}
model.setViewName("403");
return model;
}
我们可以创建403.jsp如下所示:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<body>
<h1>HTTP Status 403 - Access is denied</h1>
<h2>${msg}</h2>
<c:url value="/j_spring_security_logout" var="logoutUrl"
<a href="${logoutUrl}">Log Out</a>
</body>
</html>
有关Spring-Security,请参阅Spring Security Databy身份验证。
XML和其他文件。
使用AccessDeniedHandler Ref:我们还可以使用AccessDeniedHandler来处理403访问拒绝页面。
package org.igi.theitroad.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 CustomAccessDeniedHandler implements AccessDeniedHandler {
private String errorPage;
public CustomAccessDeniedHandler() {
}
public CustomAccessDeniedHandler(String errorPage) {
this.errorPage = errorPage;
}
public String getErrorPage() {
return errorPage;
}
public void setErrorPage(String errorPage) {
this.errorPage = errorPage;
}
@Override
public void handle(HttpServletRequest request, HttpServletResponse response,
AccessDeniedException accessDeniedException)
throws IOException, ServletException {
//You can redirect to errorpage
response.sendRedirect(errorPage);
}
}
我们需要在Spring-Security.xml中添加HTTP标记中的REF。
<http auto-config="true" use-expressions="true"> <access-denied-handler ref=custom403 </http> <beans:bean id="custom403" class="org.igi.theitroad.handler.CustomAccessDeniedHandler"> <beans:property name="errorPage" value="403" ... other entries

