首先引入Spring Security依赖,然后通过SecurityConfig配置安全策略,接着实现UserDetailsService加载用户信息,并配置BCrypt密码编码器。具体为:添加spring-boot-starter-security依赖后,所有接口默认受保护;在SecurityConfig中定义permitAll允许公开访问路径,hasRole限制ADMIN接口访问,启用formLogin和httpBasic认证方式;CustomUserDetailsService从数据库加载用户并构建UserDetails对象;使用BCryptPasswordEncoder确保密码加密存储。角色需注意默认的ROLE_前缀匹配规则。初期可使用内置登录页验证流程,后续可集成JWT实现无状态认证。

Spring Security 是 Java 后端开发中实现用户认证和授权的主流框架,能有效保护 Web 应用的安全。要使用它实现基本的用户登录认证和接口权限控制,核心步骤包括引入依赖、配置安全策略、定义用户详情服务以及设置角色权限。
添加 Spring Security 依赖
在基于 Spring Boot 的项目中,只需在 pom.xml 中加入以下依赖:
org.springframework.boot
spring-boot-starter-security
引入后,所有接口默认会被保护,访问时需要登录。
配置 SecurityConfig 类
创建一个配置类继承 WebSecurityConfigurerAdapter(旧版本)或直接使用新式组件方式(Spring Security 5.7+ 推荐),以下是较新的函数式配置示例:
立即学习“Java免费学习笔记(深入)”;
@Configuration
@EnableWebSecurity
public class SecurityConfig {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
.authorizeHttpRequests(auth -> auth
.requestMatchers(“/api/public/**”).permitAll()
.requestMatchers(“/api/admin/**”).hasRole(“ADMIN”)
.anyRequest().authenticated()
)
.formLogin(withDefaults())
.httpBasic(withDefaults());
return http.build();
}
}
说明:
小爱开放平台
小米旗下小爱开放平台
281 查看详情
permitAll():允许所有人访问公开接口 hasRole(“ADMIN”):只有拥有 ADMIN 角色的用户才能访问 formLogin():启用表单登录页面 httpBasic():支持 HTTP Basic 认证(适合 API 调试)
自定义用户认证逻辑
通过实现 UserDetailsService 接口加载用户信息:
@Service
public class CustomUserDetailsService implements UserDetailsService {
@Autowired
private UserRepository userRepository;
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
User user = userRepository.findByUsername(username)
.orElseThrow(() -> new UsernameNotFoundException(“用户不存在: ” + username));
return org.springframework.security.core.userdetails.User
.withUsername(user.getUsername())
.password(user.getPassword())
.roles(user.getRoles().toArray(new String[0]))
.build();
}
}
确保数据库中的密码是使用 PasswordEncoder 加密存储的。
配置密码编码器
推荐使用 BCrypt:
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
注册或保存用户时,必须用此编码器对明文密码加密后再存入数据库。
基本上就这些。配合 REST 接口和 JWT 可进一步实现无状态认证。初期用内置登录页快速验证流程即可。安全机制不复杂但容易忽略细节,比如角色前缀 ROLE_ 和权限表达式的匹配规则。
以上就是java后端开发怎么用Spring Security实现用户认证和授权?的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/866770.html
微信扫一扫
支付宝扫一扫