Java 在用户Spring中立即登录
我尝试使用此代码在spring中立即登录用户Java 在用户Spring中立即登录,java,authentication,spring-security,Java,Authentication,Spring Security,我尝试使用此代码在spring中立即登录用户 SecurityContextHolder.getContext().getAuthentication().getName(); 我有一个配置类 @Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { private PasswordEncoderConfig passwordEncoderConfig
SecurityContextHolder.getContext().getAuthentication().getName();
我有一个配置类
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
private PasswordEncoderConfig passwordEncoderConfig;
@Autowired
public SecurityConfig(PasswordEncoderConfig passwordEncoderConfig) {
this.passwordEncoderConfig = passwordEncoderConfig;
}
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
String password = passwordEncoderConfig.passwordEncoder().encode("123");
String password2 = passwordEncoderConfig.passwordEncoder().encode("456");
auth.inMemoryAuthentication().withUser("ram").password(password).roles("USER");
auth.inMemoryAuthentication().withUser("ram1").password(password2).roles("USER");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.httpBasic().and()
.authorizeRequests()
.antMatchers("/drug/**").anonymous()
.and().formLogin().permitAll()
.defaultSuccessUrl("/account/show")
.and().logout()
.logoutUrl("/logout")
.invalidateHttpSession(true)
.permitAll()
.and().cors().and().csrf().disable();
}
}
和一个控制器
@Controller
@RequestMapping(value = "/account")
public class AccountController {
@Autowired
private UserService userService;
@RequestMapping(value = "/show", method = RequestMethod.GET)
public String showAccount(){
final String currentUserName = SecurityContextHolder.getContext().getAuthentication().getName();
System.out.println(currentUserName);
return "account";
}
}
我想在控制器中获取用户名,所以在这种情况下,我希望在控制台中打印ram。取而代之的是,即使我以ram身份登录,它仍会不断返回anonymousUser。如何获取用户名?antMatchers(“/account/**”).Authenticated()antMatchers(“/account/**”).Authenticated()SecurityContextHolder.getContext().getAuthentication().getName();这是提取经过身份验证的用户的正确方法,我用同样的方法使用它。我唯一想到的可能是内存中的身份验证。也许您可以尝试使用内存中的数据库,甚至可以使用易于配置的真实数据库;这是提取经过身份验证的用户的正确方法,我用同样的方法使用它。我唯一想到的可能是内存中的身份验证。也许你可以尝试使用内存中的数据库,甚至可以使用易于配置的真实数据库。当我使用它时,spring不会将我重定向到“/account/show”页面。它只是一次又一次地显示登录表单可能是错误的用户名/密码?没有错误消息吗?点击F12,您登录后得到什么响应?登录和密码正确,没有错误消息,没有无效凭据消息,没有任何类型的消息。在使用了有效的用户名和密码后,它一直将我重定向到,这很奇怪。它到达控制器了吗?控制台中打印了什么?顺便问一下,您打开的初始URL是什么?当我使用它时,spring不会将我重定向到“/account/show”页面。它只是一次又一次地显示登录表单可能是错误的用户名/密码?没有错误消息吗?点击F12,您登录后得到什么响应?登录和密码正确,没有错误消息,没有无效凭据消息,没有任何类型的消息。在使用了有效的用户名和密码后,它一直将我重定向到,这很奇怪。它到达控制器了吗?控制台中打印了什么?顺便问一下,您打开的初始URL是什么?