相关文章推荐
长情的豆腐  ·  410 Gone - HTTP | MDN·  2 月前    · 
很拉风的灭火器  ·  WHERE 子句 (Microsoft ...·  2 月前    · 
绅士的书包  ·  403 Forbidden - HTTP ...·  1 月前    · 
豁达的红烧肉  ·  一项历史性工程 一场深层次变革 _光明网·  1 周前    · 
重感情的煎鸡蛋  ·  about_Pipelines - ...·  1 月前    · 
火星上的猴子  ·  尼泊尔_百度百科·  5 月前    · 
冷冷的警车  ·  女超人第二季百度云 - 百度·  7 月前    · 
咆哮的地瓜  ·  实况足球2021新增改动详解_升黑降金名单及 ...·  8 月前    · 
Code  ›  浅谈spring security 403机制一、无权限访问二、匿名访问三、有权限访问原因机制指定AccessDeniedHandler指定error-page情景原因结论开发者社区
access
https://cloud.tencent.com/developer/article/1036608
眼睛小的柚子
1 年前
作者头像
用户1174983
0 篇文章

浅谈spring security 403机制一、无权限访问二、匿名访问三、有权限访问原因机制指定AccessDeniedHandler指定error-page情景原因结论

前往专栏
腾讯云
开发者社区
文档 意见反馈 控制台
首页
学习
活动
专区
工具
TVP
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP
返回腾讯云官网
社区首页 > 专栏 > 钟绍威的专栏 > 浅谈spring security 403机制一、无权限访问二、匿名访问三、有权限访问原因机制指定AccessDeniedHandler指定error-page情景原因结论

浅谈spring security 403机制一、无权限访问二、匿名访问三、有权限访问原因机制指定AccessDeniedHandler指定error-page情景原因结论

作者头像
用户1174983
发布 于 2018-02-05 14:58:34
4.3K 0
发布 于 2018-02-05 14:58:34
举报

403就是access denied ,就是请求拒绝,因为权限不足 三种权限级别 一、无权限访问 <security:http security="none" pattern="/index.jsp"   /> 这种即是不需要登录,也可以访问的,但是不会传csrf_key 二、匿名访问 <security:http> <security:intercept-url pattern="/index.jsp" access="IS_AUTHENTICATED_ANONYMOUSLY"/> </security:http> 这种也是不需要登录就访问的,但是会传csrf_key 三、有权限访问 <security:http> <security:intercept-url pattern="/index.jsp" access="xxxxx"/> </security:http> 这种就需要用户登录了,而且需要相应的权限才能访问,不然就报403(access denied) 没有跳转403? 今天遇到了一个诡异的问题 admin.jsp设置为access="USER",需要用户登录了,而且需要有USER权限才能访问 然而我没登陆的时候,去访问admin.jsp,结果没有跳到403页面,跳到了login.jsp 在我预想的是,跳到403 当用户已经登录了,但是权限不足,才会跳转到403 当用户没有登录的时候,访问有权限的页面,只会跳转到登陆页面 spring security处理请求的时候,先会检测用户是否登录,也就是检测是否有authentication(身份) 此时,如果用户没有登录,而且请求是需要登录的action,spring security会跳转到登陆页面,就算这个页面需要权限访问,也不会出现403。 登录的时候,会在SecurityContextHolder里面放一个记录用户信息(用户名、权限)的principal,需要验证用户权限的时候,就会从SecurityContextHolder取出principal来验证权限。 如果用户已经登录了(有了authentication),如果用户的权限不足,就会报403 这个时候security:access-denied-handler才会生效 自定义403 想要自定义403,需要在spring-security.xml里面设置security:access-denied-handler 有两种方式: 指定AccessDeniedHandler 自定义一个403处理机制,需要实现AccessDeniedHandler接口,实现里面的handle方法 当权限不足的时候,spring security会调用handle方法 可以在handle方法里面重定向或者转发请求 代码demo


public class AccessDeniedServletHandler implements AccessDeniedHandler {
	private static final String DEF_ERROR_PAGE_PATH="action/deniedServlet_denied";
	@Override
	public void handle(HttpServletRequest request, HttpServletResponse response,
			AccessDeniedException accessDeniedException) throws IOException, ServletException {
		response.sendRedirect(DEF_ERROR_PAGE_PATH);
在spring-security.xml配置
<security:access-denied-handler ref="accessDeniedServletHandler" />
<bean id="accessDeniedServletHandler" class="com.xxx.servlet.AccessDeniedServletHandler" scope="singleton"></bean>
指定error-page
这种方式,实际上是转发请求,做不到重定向
在spring-security.xml配置
<security:access-denied-handler error-page="403.html" />
整合Struts的问题
前提:自定义的403页面的URL,是通过struts的action访问的
当权限不足的时候,将请求转发到自定义的403页面时,会出现404( not found)
但是直接访问403页面的时候,又是正常的
spring security 的DefaultSecurityFilterChain在strust的filter之后
 
推荐文章
长情的豆腐  ·  410 Gone - HTTP | MDN
2 月前
很拉风的灭火器  ·  WHERE 子句 (Microsoft Access SQL) | Microsoft Learn
2 月前
绅士的书包  ·  403 Forbidden - HTTP | MDN
1 月前
豁达的红烧肉  ·  一项历史性工程 一场深层次变革 _光明网
1 周前
重感情的煎鸡蛋  ·  about_Pipelines - PowerShell | Microsoft Learn
1 月前
火星上的猴子  ·  尼泊尔_百度百科
5 月前
冷冷的警车  ·  女超人第二季百度云 - 百度
7 月前
咆哮的地瓜  ·  实况足球2021新增改动详解_升黑降金名单及球员数据_3DM单机
8 月前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号