当前位置:实例文章 » JAVA Web实例» [文章]spring boot中常用的安全框架 Security框架 利用Security框架实现用户登录验证token和用户授权(接口权限控制)

spring boot中常用的安全框架 Security框架 利用Security框架实现用户登录验证token和用户授权(接口权限控制)

发布人:shili8 发布时间:2025-02-15 11:38 阅读次数:0

**Spring Boot 中的安全框架**

在 Spring Boot 应用中,安全性是一个非常重要的方面。为了确保应用的安全性,我们可以使用 Spring Security 框架来实现用户登录验证、token 和用户授权(接口权限控制)。本文将详细介绍如何利用 Spring Security 框架实现这些功能。

**1.依赖配置**

首先,我们需要在 `pom.xml` 文件中添加 Spring Security 的依赖:

xml<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-security</artifactId>
</dependency>

**2. 配置安全性**

接下来,我们需要配置安全性相关的参数。我们可以在 `application.properties` 文件中添加以下内容:
propertiessecurity.basic.enabled=truesecurity.user.name=adminsecurity.user.password=123456

这里,我们启用了基本的安全性,并设置了用户名和密码。

**3. 实现用户登录验证**

下一步是实现用户登录验证。我们可以创建一个 `UserDetailsService` 的实现类,负责从数据库中获取用户信息:
java@Servicepublic class CustomUserDetailsService implements UserDetailsService {

 @Autowired private UserRepository userRepository;

 @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
 User user = userRepository.findByUsername(username);
 if (user != null) {
 return new User(user.getUsername(), user.getPassword(), getAuthorities());
 } else {
 throw new UsernameNotFoundException("用户不存在");
 }
 }

 private List getAuthorities() {
 List authorities = new ArrayList<>();
 authorities.add(new SimpleGrantedAuthority("ROLE_USER"));
 return authorities;
 }
}

这里,我们实现了 `UserDetailsService` 接口,负责从数据库中获取用户信息,并返回一个 `UserDetails` 对象。

**4. 实现token**

接下来,我们需要实现token。我们可以使用 Spring Security 的 `Token` 类来生成token:
java@RestControllerpublic class TokenController {

 @Autowired private CustomUserDetailsService userDetailsService;

 @PostMapping("/login")
 public ResponseEntity login(@RequestBody LoginRequest request) {
 UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(request.getUsername(), request.getPassword());
 Authentication authentication = userDetailsService.authenticate(token);
 if (authentication.isAuthenticated()) {
 String tokenValue = generateToken(authentication);
 return ResponseEntity.ok(tokenValue);
 } else {
 return ResponseEntity.badRequest().body("登录失败");
 }
 }

 private String generateToken(Authentication authentication) {
 String token = Jwts.builder()
 .setSubject(authentication.getPrincipal().toString())
 .setIssuedAt(new Date())
 .setExpiration(new Date(System.currentTimeMillis() +3600000))
 .signWith(SignatureAlgorithm.HS512, "secret")
 .compact();
 return token;
 }
}

这里,我们实现了一个 `TokenController`,负责生成token。

**5. 实现用户授权**

最后,我们需要实现用户授权。我们可以使用 Spring Security 的 `AuthorizationManager` 接口来实现:
java@Servicepublic class CustomAuthorizationManager implements AuthorizationManager {

 @Override public boolean authorize(AbstractSecurityExpressionRoot root, Object o) {
 // 实现授权逻辑 return true;
 }
}

这里,我们实现了一个 `CustomAuthorizationManager`,负责实现授权逻辑。

**6. 配置授权**

最后,我们需要配置授权。我们可以在 `application.properties` 文件中添加以下内容:
propertiessecurity.authorization.manager=cn.hutool.core.util.SecurityUtils

这里,我们配置了授权管理器。

通过以上步骤,我们就实现了 Spring Boot 中的安全框架,包括用户登录验证、token 和用户授权(接口权限控制)。

其他信息

其他资源

Top