Spring Security如何在接口中登录方式不使用token方式
时间: 2024-05-05 11:22:10 浏览: 6
Spring Security提供了多种身份验证(authentication)方式,其中包括token和基于表单的登录方式。
对于基于表单的登录方式,你可以使用Spring Security提供的loginPage()方法配置登录页。在该登录页中,用户可以输入用户名和密码进行身份验证。Spring Security会将这些信息封装成一个Authentication对象,并调用AuthenticationManager进行身份验证。
如果身份验证成功,Spring Security会创建一个Authentication对象并将其存储在SecurityContextHolder中。此时,用户已经成功登录。你可以通过在控制器方法中使用@AuthenticationPrincipal注解来获取已经登录的用户信息。
下面是一个基于表单的登录示例:
```
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/", "/home").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.permitAll()
.and()
.logout()
.permitAll();
}
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth
.inMemoryAuthentication()
.withUser("user").password("{noop}password").roles("USER");
}
}
```
在上述示例中,我们使用了基于内存的身份验证,在内存中保存了一个用户名为user,密码为password的用户。当用户访问需要身份验证的资源时,Spring Security会自动跳转到/login页面,用户可以在该页面中输入用户名和密码进行身份验证。
如果你需要使用其他的身份验证方式,你可以参考Spring Security的官方文档进行配置。