Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring Security sec:使用Java配置授权标记_Java_Spring_Spring Mvc_Spring Security - Fatal编程技术网

Spring Security sec:使用Java配置授权标记

Spring Security sec:使用Java配置授权标记,java,spring,spring-mvc,spring-security,Java,Spring,Spring Mvc,Spring Security,我目前正在开发一个用例,在这个用例中,我需要使用下面的Spring安全标记库来显示(或不显示)基于用户权限的链接 <spring:url var="createUserURL" value="/security/user/create" /> <sec:authorize url="${createUserURL}"> <a href="${createUserURL}"> <spring:message cod

我目前正在开发一个用例,在这个用例中,我需要使用下面的Spring安全标记库来显示(或不显示)基于用户权限的链接

<spring:url var="createUserURL" value="/security/user/create" />

<sec:authorize url="${createUserURL}">
       <a href="${createUserURL}">
             <spring:message code="button.createUser" />
       </a>
</sec:authorize>
…但是,它需要一个FilterSecurityInterceptor实例,我已经在日志中看到了它。事实上,它已经是我的过滤链的一部分,所以我想知道如何在上面的
defaultwebinvocationprivilegeeevaluator
构造函数中引用它

弹簧安全3.2.4.1版本参考:


谢谢

要获得
过滤器安全Interceptor的实例
只需向
@Bean
-注释的方法添加一个参数,spring就会发挥神奇的作用(它会找到匹配的Bean并将其作为参数传递给该方法):

但这并不能解决您的问题。当使用java配置时,spring自动创建
WebInvocationPrivilegeEvaluator
bean,因此不需要手动创建它。事实上,如果上下文中没有
webinvocationprivilegeeevaluator
bean,
sec:authorize
标记就会抛出一个

我相信您的问题是由于不正确使用
url
属性造成的。它的值应该是一个内部url,如
/security/user/create
,但您使用的是
标记的结果,该标记将上下文路径附加到该url(如
/context/security/user/create


另一种可能是,您没有将spring security配置为真正保护
/security/user/create
url,但我认为这里不是这样。

您可以向我们展示您为保护您的url而做的安全配置吗URLs@SangramJadhav:简单地说:
@PreAuthorize(“hasRole('ADMINISTRATOR'))
在控制器方法上。当我尝试通过单击按钮/链接访问此方法时,它会起作用。通过工作,我的意思是,我得到了预期的HTTP 403错误,因为我不应该访问该功能。只是测试了它,即使我像你建议的那样硬编码URL,它也不起作用。有趣的是,当我真的点击那个链接时,我得到了一个HTTP403(这是正确的),然后是时候进行一些调试了。您可以共享您的项目或创建一个吗?很遗憾,我无法共享该项目,因为它包含敏感数据和BI。我可以提供调试日志,但我看到的是投票者总是返回
1
。也许您至少可以显示所有相关配置(webapp+spring+spring security),包括包含
@PreAuthorize
注释的控制器框架?
<sec:authorize url="${createUserURL}">
@Bean
public WebInvocationPrivilegeEvaluator webInvocationPrivilegeEvaluator() {
   return new DefaultWebInvocationPrivilegeEvaluator();
}
@Bean
public WebInvocationPrivilegeEvaluator webInvocationPrivilegeEvaluator(FilterSecurityInterceptor filterSecurityInterceptor) {
   return new DefaultWebInvocationPrivilegeEvaluator(filterSecurityInterceptor);
}