Commit bf6ae7d5 by zhangxingmin

push

parent c4d4a672
......@@ -68,6 +68,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
"/swagger-ui/**",
"/v3/api-docs/**",
"/sysUser/body/detail",
"/clientUser/body/detail",
"/scrm/test",
"/doc.html",
"/webjars/**",
......
......@@ -16,6 +16,7 @@ import java.util.List;
@Data
public class AuthUserDto implements UserDetails {
//==========管理端用户表sys_user信息-开始============
/**
* 系统用户主键id(数据库唯一标识)
*/
......@@ -41,6 +42,43 @@ public class AuthUserDto implements UserDetails {
*/
private Integer isSuperAdmin;
//==========管理端用户表sys_user信息-结束============
//==========客户端端用户表client_user信息-开始============
/**
* 客户端用户表唯一业务ID
*/
private String clientUserBizId;
/**
* 姓名
*/
private String name;
/**
* 手机号
*/
private String phone;
/**
* 邀请码
*/
private String invitationCode;
/**
* 状态(0:停用 1:启用)
*/
private Integer status;
/**
* 审批状态
*/
private String approvalStatus;
//==========客户端端用户表client_user信息-结束============
// ============== Spring Security账户状态属性 ==============
/**
* 账户是否启用(默认true启用)
......
......@@ -5,6 +5,7 @@ import io.jsonwebtoken.*;
import io.jsonwebtoken.io.Decoders;
import io.jsonwebtoken.security.Keys;
import io.jsonwebtoken.security.SecurityException;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication;
......@@ -34,6 +35,8 @@ public class JwtTokenProvider {
/**
* 生成JWT令牌
* @param authentication 认证信息
* @return
*/
public String generateToken(Authentication authentication) {
if (authentication == null || authentication.getPrincipal() == null) {
......@@ -56,7 +59,32 @@ public class JwtTokenProvider {
}
/**
* 生成JWT令牌
* @param bizId 业务唯一ID
* @return
*/
public String generateToken(String bizId) {
if (StringUtils.isBlank(bizId)) {
throw new JwtAuthenticationException("JWT的主题不能为空");
}
try {
return Jwts.builder()
.setSubject(bizId)
// .claim("roles", getRoles(authUserDto.getAuthorities()))
.setIssuedAt(new Date())
.setExpiration(new Date(System.currentTimeMillis() + jwtExpiration))
.signWith(getSigningKey(), SignatureAlgorithm.HS512)
.compact();
} catch (Exception e) {
throw new JwtAuthenticationException("生成JWT令牌失败: " + e.getMessage());
}
}
/**
* 提取角色信息
* @param authorities
* @return
*/
private Collection<String> getRoles(Collection<? extends GrantedAuthority> authorities) {
return authorities.stream()
......@@ -66,6 +94,8 @@ public class JwtTokenProvider {
/**
* 从令牌中获取用户名
* @param token
* @return
*/
public String getUsernameFromToken(String token) {
try {
......@@ -82,6 +112,8 @@ public class JwtTokenProvider {
/**
* 从令牌中获取用户业务id
* @param token
* @return
*/
public String getUserBizIdFromToken(String token) {
try {
......@@ -98,6 +130,8 @@ public class JwtTokenProvider {
/**
* 从令牌中获取认证信息
* @param token
* @return
*/
public Authentication getAuthentication(String token) {
try {
......@@ -117,6 +151,8 @@ public class JwtTokenProvider {
/**
* 从令牌中获取权限信息
* @param token
* @return
*/
private Collection<? extends GrantedAuthority> getAuthoritiesFromToken(String token) {
try {
......@@ -139,6 +175,8 @@ public class JwtTokenProvider {
/**
* 验证令牌有效性
* @param token
* @return
*/
public boolean validateToken(String token) {
try {
......@@ -159,6 +197,7 @@ public class JwtTokenProvider {
/**
* 获取签名密钥
* @return
*/
private SecretKey getSigningKey() {
try {
......@@ -175,6 +214,7 @@ public class JwtTokenProvider {
/**
* 生成符合HS512要求的密钥(用于生成配置文件中的密钥)
* @return
*/
public static String generateSecureKey() {
try {
......@@ -202,7 +242,11 @@ public class JwtTokenProvider {
}
}
// 解析 JWT 声明
/**
* 解析 JWT 声明
* @param token
* @return
*/
public Claims parseClaims(String token) {
return Jwts.parserBuilder()
.setSigningKey(getSigningKey())
......@@ -211,7 +255,11 @@ public class JwtTokenProvider {
.getBody();
}
// 获取 JWT 头部信息
/**
* 获取 JWT 头部信息
* @param token
* @return
*/
public Map<String, Object> getHeaders(String token) {
return Jwts.parserBuilder()
.setSigningKey(getSigningKey())
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment