gpt4 book ai didi

java - 实现自定义 Spring Security 身份验证方法

转载 作者:行者123 更新时间:2023-12-01 12:26:35 25 4
gpt4 key购买 nike

我正在构建一个带有用户登录机制的 Spring MVC Web 应用程序。我已经使用 spring-boot 来设置我的应用程序。为了使用数据库对用户进行身份验证,我遵循了以下教程:

http://justinrodenbostel.com/2014/05/30/part-5-integrating-spring-security-with-spring-boot-web/

这里使用了spring内置的身份验证过程。通过指定

auth.jdbcAuthentication().dataSource(datasource);

Spring 安全性检查用户和权限表并对用户进行身份验证。

我想覆盖此默认行为,因为我没有(不需要)身份验证表。另外,我的用户表的列比标准的三列多得多,即用户名、密码和启用。

如何覆盖默认实现?

另外,用户登录后,如何获取用户的信息?

谢谢!

最佳答案

您可以创建自定义 AuthenticationProvider 或将 DaoAuthenticationProvider 与自定义 UserDetailsS​​ervice 实现结合使用。

下面是第二种解决方案的 Spring Java 配置类示例:

@Configuration
@EnableWebMvcSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

@Autowired
private UserService userService;

// ...

@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.authenticationProvider(authenticationProvider());
}

@Bean
public AuthenticationProvider authenticationProvider() {
DaoAuthenticationProvider authenticationProvider = new DaoAuthenticationProvider();
authenticationProvider.setPasswordEncoder(new ShaPasswordEncoder());
authenticationProvider.setUserDetailsService(userService);
return authenticationProvider;
}

}

您的 UserDetailsS​​ervice 接口(interface)的实现将包含特定于您的项目域的逻辑,用于通过用户名检索用户。

如果您需要更详细的示例,请在下面发表评论,我将更新答案,但这应该为您提供总体思路。

我还建议阅读上述 Spring 类和接口(interface)的 JavaDocs。

关于java - 实现自定义 Spring Security 身份验证方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26285609/

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