java – 如何确定使用Spring Security访问URL所需的角色?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 如何确定使用Spring Security访问URL所需的角色?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2003字,纯文字阅读大概需要3分钟。
内容图文
![java – 如何确定使用Spring Security访问URL所需的角色?](/upload/InfoBanner/zyjiaocheng/822/bdc3f9b53dc248d0ba079ea29ccb3650.jpg)
我正在使用Spring Security来保护webapp. URL的安全性如下:
<security:http entry-point-ref="authenticationEntryPoint">
<security:intercept-url pattern="/" access="ROLE_ANONYMOUS" />
<security:intercept-url pattern="/assets/**/*" access="ROLE_ANONYMOUS" />
...
<security:intercept-url pattern="/**" access="ROLE_USER" />
<security:anonymous granted-authority="ROLE_ANONYMOUS" />
</security:http>
我有一个过滤器,在某些情况下需要将用户重定向到特殊页面.但是,该页面需要资产目录中的图像和CSS文件,遗憾的是,这些文件也会被重定向到该特殊页面.我不希望过滤器手动检查每个URL模式,因为我的实际URL配置要长得多,而且我还想允许其他页面.
有没有办法从过滤器中确定给定页面需要哪些角色?如果不需要ROLE_ANONYMOUS,我可以选择不重定向.
解决方法:
假设您正在使用Spring Security 3,那么该信息的来源(为特定路径配置哪些属性/角色)是注入FilterSecurityInterceptor的FilterInvocationSecurityMetadataSource.因此,如果您有特定的URL,则可以通过将FilterInvocation(从请求和响应创建)传递给FilterInvocationSecurityMetadataSource的getAttributes()方法来查询已配置的属性.
获取对命名空间创建的内部bean的引用可能有点棘手.假设您有自己想要进行调用的bean(或bean),可以通过向应用程序上下文添加BeanPostProcessor将其注入其中,实现如下:
public class FilterSecurityMDSExtractor implements BeanPostProcessor, BeanFactoryAware {
private ConfigurableListableBeanFactory bf;
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
if (bean instanceof FilterInvocationSecurityMetadataSource) {
// Get your own bean from the BeanFactory here and inject the SecurityMetadataSource into it
}
return bean;
}
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
return bean;
}
public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
this.bf = (ConfigurableListableBeanFactory)beanFactory;
}
}
请注意,Spring Security会在上下文中自动注册WebInvocationPrivilegeEvaluator,可用于检查用户是否能够在不实际调用的情况下调用特定URL.这是类似的,因为它查询SecurityMetadataSource,但不完全是你在这里.
内容总结
以上是互联网集市为您收集整理的java – 如何确定使用Spring Security访问URL所需的角色?全部内容,希望文章能够帮你解决java – 如何确定使用Spring Security访问URL所需的角色?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。