Spring Security - 检查Web URL是否安全/受保护

时间:2012-09-02 13:47:33

标签: spring-security

如果当前请求是安全的,有没有办法“询问”弹簧安全性?因为即使我通过身份验证,我也想检测我是否在受保护的安全URL或匿名/公共页面中

提前致谢!

3 个答案:

答案 0 :(得分:2)

Spring Security为此提供了JSP tag support。例如:

 rb.AddTorque (movement * speed);

Thymeleaf提供了Spring Security Dialect,它可以直接支持checking URL authorization Spring Security。例如:

<sec:authorize url="/admin">

This content will only be visible to users who are authorized to access the "/admin" URL.

</sec:authorize>

如果您的技术不支持直接执行检查,您可以轻松使用WebInvocationPrivilegeEvaluator(这是JSP taglib和Thymeleaf使用的对象)。例如,您可以<div sec:authorize-url="/admin"> This will only be displayed if authenticated user can call the "/admin" URL. </div> @Autowire的实例并直接使用它。显然,语法会根据您使用它的位置(即GSP,Freemarker等)而有所不同,但这是直接Java代码中的一个示例。

WebInvocationPrivilegeEvaluator

答案 1 :(得分:0)

我认为您可以使用自己的AccessDecisionVoter实现,然后只需覆盖Vote方法,并使用filterInvocation.getRequestUrl();方法比较拦截网址。

@Override
public int vote(Authentication authentication, FilterInvocation filterInvocation,
    Collection<ConfigAttribute> attributes) {
  String requestUrl = filterInvocation.getRequestUrl();
  ....
}

答案 2 :(得分:0)

我们可以将其标记为安全通道,因此转换为https:// url。

    <intercept-url pattern="/**" access="IS_AUTHENTICATED_FULLY" requires-channel="https" />

然后我们可以使用request.getScheme()来识别它。 我使用了org.springframework.security.version 3.1.4.RELEASE