如何检查URL的java代码中的hasRole

时间:2016-08-04 06:51:48

标签: java spring authentication spring-security

我有RequestCache从哪里可以获得redirectURL,用户登陆成功后将登陆。我使用spring security进行身份验证。

现在我想通过Authentication检查权限是否具有redirectURL的访问权限。

* AuthenticationSuccessHandler.java

@Override
public void onAuthenticationSuccess(final HttpServletRequest request, final HttpServletResponse response,
        final Authentication authentication) throws IOException, ServletException
{
    final RequestCache requestCache = new HttpSessionRequestCache();
    final SavedRequest savedRequest = requestCache.getRequest(request, response);
    String redirectURL = savedRequest.getRedirectUrl()
    Collection<? extends GrantedAuthority> authorities = authentication.getAuthorities();
    // Need to check redirectURL whether it is authorized or not
    ......
}

我知道有办法使用请求检查hasRole - &gt; request.isUserInRole(ROLE)但在我的情况下,请求不会提供我想要授权的URL。

我的目标网址是redirectURL,我可以想要授权。请帮忙。

1 个答案:

答案 0 :(得分:0)

似乎你需要自定义访问决策选民。看看这篇文章:http://docs.spring.io/spring-security/site/docs/3.0.x/reference/authz-arch.html基本上你已经对用户进行了身份验证,但想要检查他是否有权访问某些资源。您可以注册自定义选民或更改现有选民。看看这个stackoverflow问题Spring Security: AccessDecisionVoter