gpt4 book ai didi

java - spring security 总是返回 anonymousUser

转载 作者:行者123 更新时间:2023-12-04 17:42:14 28 4
gpt4 key购买 nike

我有一个针对现有基于 spring 的应用程序的 spring 安全实现,无论我在登录页面提供什么,它总是返回匿名用户。

@Configuration
@EnableWebSecurity
@EnableGlobalAuthentication
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {



@Autowired
public void configureGlobalSecurity(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication().withUser("bill").password("abc123").roles("ROLE_USER");
auth.inMemoryAuthentication().withUser("admin").password("root123").roles("ADMIN");
auth.inMemoryAuthentication().withUser("dba").password("root123").roles("ADMIN","DBA");
}

@Override
protected void configure(HttpSecurity http) throws Exception {
System.out.println("configure called");
http.authorizeRequests()
.antMatchers("/*").access("hasRole('ROLE_USER')")
//.antMatchers("/*").access("IS_AUTHENTICATED")
.and().formLogin().loginPage("/login")
.usernameParameter("user").passwordParameter("passWord")
.and().csrf()
.and().exceptionHandling().accessDeniedPage("/Access_Denied");
}

}

来自 login.jsp 的表单:

<form action="/Patching/Authen" name="form1" method="POST" onsubmit="return validateForm();"><br><br>
<h1>User Login</h1>
<table>
<tr>
<th>Username</th>
<td><input type="text" name="username" id="user" required/></td>
</tr>
<tr>
<th>Password</th>
<td><input type="password" name="password" required/></td>
</tr>
</table><br><input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" />
<input type="submit"><br><br><br>
</form>

当我在我的 Controller 上发布表单提交时:

Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();

返回匿名认证。

附言我已经有一个 login.jsp,其中配置了用户和密码参数。感谢帮助。

最佳答案

我尝试了您上面的任何建议...对我有用的是将 login.jsp 上的表单操作更改为“登录”并将配置修改为

 http.authorizeRequests()
.antMatchers("/", "/home").access("hasRole('USER')")
.antMatchers("/resources/**").permitAll()
//.antMatchers("/*").access("IS_AUTHENTICATED")
.anyRequest().authenticated()
.and().csrf().disable().formLogin().loginPage("/login").permitAll()
//.loginProcessingUrl("/Authen")
.usernameParameter("user").passwordParameter("passWord")
.defaultSuccessUrl("/Authen")
.failureUrl("/failedLogin")
.and().exceptionHandling().accessDeniedPage("/Access_Denied");

此外,我需要处理现有实现流程以及 Spring Security。

关于java - spring security 总是返回 anonymousUser,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53929968/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com