首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring安全自动认证不起作用

Spring安全自动认证不起作用
EN

Stack Overflow用户
提问于 2016-09-15 07:55:48
回答 1查看 764关注 0票数 3

我在应用程序中使用spring安全性。当用户想要访问/privatePages/*时,会显示一个登录屏幕来进行身份验证。这个很好用。我想要一些作为客人访问的东西,所以在我的控制器中我做了这样的事情:

代码语言:javascript
复制
Authentication authentication = new UsernamePasswordAuthenticationToken("SAMPLE", "SAMPLE", getAuthority());
//authentication.setAuthenticated(true);
SecurityContextHolder.getContext().setAuthentication(authentication);

public Collection<GrantedAuthority> getAuthority() {
    Collection<GrantedAuthority> grantedAuthorities = new ArrayList<GrantedAuthority>();
    GrantedAuthority grantedAuthority = new GrantedAuthority() {
        public String getAuthority() {
            return "ROLE_RequiredRole";
        }
    }; 
    grantedAuthorities.add(grantedAuthority);
    return grantedAuthorities;
}

我可以看到,现在执行身份验证是因为这个表达式给出了真:

代码语言:javascript
复制
SecurityContextHolder.getContext().getAuthentication().isAuthenticated()

但是,我无法访问/privatePages/somePage.jsp。它仍然将我重定向到登录页面。我漏掉了什么吗?

更新

代码语言:javascript
复制
<http pattern="/privatePages/**" auto-config="true" use-expressions="true" authentication-manager-ref="myManager" create-session="never">
    <session-management invalid-session-url="/privatePages/login" />
    <intercept-url pattern="/privatePages" access="hasRole('RequiredRole')"/>
    <intercept-url pattern="/privatePages/" access="hasRole('RequiredRole')"/>
    <form-login
        login-page="/privatePages/login" . . . . 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-15 08:42:27

您正在/privatePages/**上制定规则,这意味着,该规则将应用于所有前缀为localhost:8080/privatePages/...的URL,如果在该规则中您正在强制执行某种所需的身份验证,那么不管您在Controller中做什么,它都会问您,因为您的请求在到达该阶段之前会通过安全筛选器。

在您的SecurityConfig中,尝试执行以下操作:

代码语言:javascript
复制
<http auto-config="true">
    <intercept-url pattern="/privatePages" access="ROLE_RequredRole" />
    <intercept-url pattern="/privatePages/somePage.jsp" access="ROLE_ANONYMOUS" />  
 </http>

这里我们使用的是ROLE_ANONYMOUS,这意味着角色不需要任何身份验证。有关更多信息,请参见这里

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39505799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档