SpringBoot+Shiro+Jwt+Vue+elementUI实现前后端分离单体系统Demo
由于篇幅所限,我无法提供完整的代码示例。但我可以提供一个简化的核心函数示例,展示如何在Spring Boot应用程序中使用Shiro和JWT进行用户认证和授权。
// 用户登录接口
@PostMapping("/login")
public ResponseEntity<?> login(@RequestBody LoginRequest loginRequest) {
Subject subject = SecurityUtils.getSubject();
try {
// 使用Shiro进行登录
subject.login(new UsernamePasswordToken(loginRequest.getUsername(), loginRequest.getPassword()));
// 登录成功后生成JWT token
String token = JWTUtil.generateToken(subject.getPrincipals());
return ResponseEntity.ok(new AuthResponse(true, token));
} catch (AuthenticationException e) {
// 处理登录失败的情况
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body(new AuthResponse(false, null));
}
}
// 获取用户信息接口(需要认证和授权)
@GetMapping("/me")
public ResponseEntity<?> getCurrentUser() {
Subject subject = SecurityUtils.getSubject();
if (subject.isAuthenticated()) {
// 用户已认证,返回用户信息
return ResponseEntity.ok(subject.getPrincipal());
} else {
// 用户未认证,返回错误信息
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body("No authenticated user");
}
}
在这个示例中,我们定义了两个接口:login
用于处理用户登录请求,getCurrentUser
用于获取当前登录用户的信息。在登录接口中,我们使用Shiro进行认证,认证成功后生成JWT token返回给客户端。获取用户信息的接口则要求用户已经通过认证,否则返回错误信息。这个示例展示了如何在Spring Boot应用中结合Shiro和JWT进行用户认证和授权。
评论已关闭