在Spring Boot中,通过Token获取用户信息的完美方案取决于你的应用程序的具体需求和Token的生成方式。以下是一个基于JWT(JSON Web Tokens)的简单示例:
- 首先,你需要添加依赖库
spring-boot-starter-security
和spring-boot-starter-oauth2-client
到你的pom.xml
中。 - 配置Token的生成和验证。
- 创建一个服务来解析Token并提取用户信息。
以下是一个简化的例子:
pom.xml依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-oauth2-client</artifactId>
</dependency>
Security配置:
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
// 配置你的安全规则,比如允许哪些路径不需要认证
.authorizeRequests()
.antMatchers("/", "/home").permitAll()
.anyRequest().authenticated()
.and()
// 其他配置,比如登录和注销
.formLogin()
.and()
.logout();
}
}
JWT Token解析服务:
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import org.springframework.stereotype.Service;
@Service
public class TokenService {
public String getUsernameFromToken(String token) {
Claims claims = Jwts.parser()
.setSigningKey("yourSecretKey")
.parseClaimsJws(token)
.getBody();
return claims.getSubject();
}
// 其他方法,比如验证Token是否过期等
}
在你的Controller中,你可以通过以下方式获取用户信息:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.Requ