Spring Security自动身份验证不起作用

诺亚·马丁

我在应用程序中使用Spring Security。当用户想要访问/ privatePages / *时,将显示登录屏幕以进行身份​​验证。这很好。我想以访客身份进行访问,因此在控制器中我做了如下操作:

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;
}

我可以看到现在执行身份验证,因为此表达式为true:

SecurityContextHolder.getContext().getAuthentication().isAuthenticated()

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

更新

<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" . . . . 
px06

您正在制定一条规则,/privatePages/**这意味着该规则将应用于带有前缀的所有URL localhost:8080/privatePages/...,并且如果在该规则中您强制执行某种必需的身份验证,那么无论您在Controller中做什么,它都会询问您因为您的请求会在到达该阶段之前先经过安全过滤器。

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

<http auto-config="true">
    <intercept-url pattern="/privatePages" access="ROLE_RequredRole" />
    <intercept-url pattern="/privatePages/somePage.jsp" access="ROLE_ANONYMOUS" />  
 </http>

在这里,我们利用ROLE_ANONYMOUS它意味着它不需要任何身份验证。有关更多信息,请参见此处

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

自动装配服务在Spring Security Java配置自定义身份验证提供程序中不起作用

spring security 自定义身份验证不起作用

HTTP基本身份验证在Spring Security中不起作用

Spring Security 4 XML配置UserDetailsService身份验证不起作用

为什么故障处理在Spring Security X.509身份验证中不起作用?

Spring Security自定义身份验证提供程序不起作用

Spring基本身份验证不起作用

Keycloak spring-security 适配器:antMatchers("/**").authenticated() 不启动身份验证过程

Spring Security自动连线不起作用

Spring Security注销不起作用-无法清除安全上下文并且经过身份验证的用户仍然存在

与 spring boot 和类似配置相比,没有 spring boot 的 Spring 安全身份验证不起作用

Spring Security-自动接线不起作用

Spring Security中的链式身份验证

使用Spring Security进行身份验证

使用RestTemplate的Spring Security身份验证

身份验证失败的Spring Security Wildfly

使用UserDetailsService的Spring Security身份验证

Spring Security Rest Basic身份验证

Spring Security不起作用

Spring安全上下文手动身份验证给出奇怪的结果

使用Spring Security + Spring数据+ MongoDB进行身份验证

Whmcs自动身份验证

Analytics API:自动身份验证

Spring Security-expiredUrl不起作用

Spring Security antMatcher不起作用

Spring Security 3 isAuthenticated()不起作用

Spring Security @PreAuthorize注释不起作用

Spring Security,注释@Secured 不起作用

Spring Webflow部分验证不起作用