gpt4 book ai didi

java - 使用 Spring Boot 了解身份验证和 session 管理

转载 作者:行者123 更新时间:2023-11-30 10:29:38 26 4
gpt4 key购买 nike

我做了一个以 mongo db 作为后端的 spring boot 项目。我想确保用户经过身份验证和授权,同时维护某种内存 session (使用 redis 或内置的 spring session )
我经历过很多像this这样的类(class), this , this等等

它们都要求您扩展 WebSecurityConfigAdapter,配置 HttpSecurity 并提供 UserDetailService。我是通过以下方式完成的。

@Configuration
@EnableGlobalMethodSecurity(prePostEnabled = true)
@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)
public class SecurityConfig extends WebSecurityConfigurerAdapter {

@Bean
public UserDetailsService userDetailsService(){
return new StockUserDetailService();
}

@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/login/**").permitAll()
.antMatchers("/logout/**").permitAll()
.antMatchers("/admin/**").hasAuthority("ADMIN")
.antMatchers("/broker/**").hasAnyAuthority("BROKER")
.anyRequest().fullyAuthenticated();
}

@Override
public void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService());
}
}

但我不明白的是,sessin 管理在哪里进行以及用户应该用来登录的 url 是什么?如果我编写一个带有 /login 映射的 Controller ,那么我的操作应该在登录 Controller 中进行。我真的没有了解全貌。



更新

我试着发帖到/login。我得到这个错误

{
"timestamp": 1494842451672,
"status": 403,
"error": "Forbidden",
"message": "Could not verify the provided CSRF token because your session was not found.",
"path": "/login"
}

最佳答案

Spring 为您管理 /login 路由。您只需要使用用户凭据向它发送 POST 请求。如果你想指定另一个登录 URL,你可以使用 .loginProcessingUrl("/myCustomLoginUrl")对于 UserDetailsS​​ervice,您必须提供您自己的实现,它实现了 loadUserByUsername(String userName) 方法,该方法从数据库或您正在使用的任何持久性存储中检索用户并返回一个 org.springframework.security.core.userdetails.User 具有相应权限。请参阅以下官方文档:https://spring.io/guides/gs/securing-web/

关于java - 使用 Spring Boot 了解身份验证和 session 管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43974484/

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