栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

spring security:拦截URL模式access =“#id == 1

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

spring security:拦截URL模式access =“#id == 1

这是不可能的。但是还有另一种方式。你可以定义自己的网络表达式,该表达式将负责从URL中提取id参数。可能看起来像这样:

<security:intercept-url pattern="/user/{id}/edit" access="getIdUrlPathParameter() == principal.userId"/>

为此,你需要:
1.添加扩展WebSecurityexpressionRoot的 CustomWebSecurityexpressionRoot
2.添加getIdUrlPathParameter()方法。它将有权访问HttpServletRequest对象。
3.定义CustomWebSecurityexpressionHandler,以扩展DefaultWebSecurityexpressionHandler。覆盖createSecurityexpressionRoot方法,然后在此处使用CustomWebSecurityexpressionRoot。
4.定义自定义访问决策管理器(下面的xml)
5. 通过access-decision-manager-ref属性将其注入到http元素中


<security:http access-decision-manager-ref="customAccessDecisionManagerBean" >    <security:intercept-url pattern="/user/{id}/edit" access="getIdUrlPathParameter() == principal.userId"/></security:http><bean id="customWebSecurityexpressionHandler" /><bean id="customAccessDecisionManagerBean" >    <property name="decisionVoters">        <list> <bean >     <property name="expressionHandler" ref="customWebSecurityexpressionHandler" /> </bean>        </list>    </property></bean>


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/387092.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号