Spring Security:安全管理框架】
四、自定义403处理方案
使用Spring Security时经常会看见403(无权限),默认情况下显示的效果如下:
而在实际项目中可能都是一个异步请求,显示上述效果对于用户就不是特别友好了。Spring Security支持自定义权限受限。
1. 新建类
新建类实现AccessDeniedHandler。
其中mime类型可以在w3c中进行查询(https://www.w3school.com.cn/media/media_mimeref.asp)
@Component
public class MyAccessDeniedHandler implements AccessDeniedHandler {
@Override
public void handle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, AccessDeniedException e) throws IOException, ServletException {
httpServletResponse.setStatus(HttpServletResponse.SC_FORBIDDEN);
httpServletResponse.setHeader("Content-Type","application/json;charset=utf-8");
PrintWriter out = httpServletResponse.getWriter();
out.write("{\"status\":\"error\",\"msg\":\"权限不足,请联系管理员!\"}");
out.flush();
out.close();
}
}
2. 修改配置类
配置类中重点添加异常处理器。设置访问受限后交给哪个对象进行处理。
myAccessDeniedHandler是在配置类中进行自动注入的。
在configure()方法中添加下面内容
五、基于表达式的访问控制
1. access()方法使用
之前学习的登录用户权限判断实际上底层实现都是调用access(表达式)
可以通过access()实现和之前学习的权