Commit bf6ae7d5 by zhangxingmin

push

parent c4d4a672
...@@ -68,6 +68,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { ...@@ -68,6 +68,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
"/swagger-ui/**", "/swagger-ui/**",
"/v3/api-docs/**", "/v3/api-docs/**",
"/sysUser/body/detail", "/sysUser/body/detail",
"/clientUser/body/detail",
"/scrm/test", "/scrm/test",
"/doc.html", "/doc.html",
"/webjars/**", "/webjars/**",
......
...@@ -16,6 +16,7 @@ import java.util.List; ...@@ -16,6 +16,7 @@ import java.util.List;
@Data @Data
public class AuthUserDto implements UserDetails { public class AuthUserDto implements UserDetails {
//==========管理端用户表sys_user信息-开始============
/** /**
* 系统用户主键id(数据库唯一标识) * 系统用户主键id(数据库唯一标识)
*/ */
...@@ -41,6 +42,43 @@ public class AuthUserDto implements UserDetails { ...@@ -41,6 +42,43 @@ public class AuthUserDto implements UserDetails {
*/ */
private Integer isSuperAdmin; 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账户状态属性 ============== // ============== Spring Security账户状态属性 ==============
/** /**
* 账户是否启用(默认true启用) * 账户是否启用(默认true启用)
......
...@@ -5,6 +5,7 @@ import io.jsonwebtoken.*; ...@@ -5,6 +5,7 @@ import io.jsonwebtoken.*;
import io.jsonwebtoken.io.Decoders; import io.jsonwebtoken.io.Decoders;
import io.jsonwebtoken.security.Keys; import io.jsonwebtoken.security.Keys;
import io.jsonwebtoken.security.SecurityException; import io.jsonwebtoken.security.SecurityException;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication; import org.springframework.security.core.Authentication;
...@@ -34,6 +35,8 @@ public class JwtTokenProvider { ...@@ -34,6 +35,8 @@ public class JwtTokenProvider {
/** /**
* 生成JWT令牌 * 生成JWT令牌
* @param authentication 认证信息
* @return
*/ */
public String generateToken(Authentication authentication) { public String generateToken(Authentication authentication) {
if (authentication == null || authentication.getPrincipal() == null) { if (authentication == null || authentication.getPrincipal() == null) {
...@@ -56,7 +59,32 @@ public class JwtTokenProvider { ...@@ -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) { private Collection<String> getRoles(Collection<? extends GrantedAuthority> authorities) {
return authorities.stream() return authorities.stream()
...@@ -66,6 +94,8 @@ public class JwtTokenProvider { ...@@ -66,6 +94,8 @@ public class JwtTokenProvider {
/** /**
* 从令牌中获取用户名 * 从令牌中获取用户名
* @param token
* @return
*/ */
public String getUsernameFromToken(String token) { public String getUsernameFromToken(String token) {
try { try {
...@@ -82,6 +112,8 @@ public class JwtTokenProvider { ...@@ -82,6 +112,8 @@ public class JwtTokenProvider {
/** /**
* 从令牌中获取用户业务id * 从令牌中获取用户业务id
* @param token
* @return
*/ */
public String getUserBizIdFromToken(String token) { public String getUserBizIdFromToken(String token) {
try { try {
...@@ -98,6 +130,8 @@ public class JwtTokenProvider { ...@@ -98,6 +130,8 @@ public class JwtTokenProvider {
/** /**
* 从令牌中获取认证信息 * 从令牌中获取认证信息
* @param token
* @return
*/ */
public Authentication getAuthentication(String token) { public Authentication getAuthentication(String token) {
try { try {
...@@ -117,6 +151,8 @@ public class JwtTokenProvider { ...@@ -117,6 +151,8 @@ public class JwtTokenProvider {
/** /**
* 从令牌中获取权限信息 * 从令牌中获取权限信息
* @param token
* @return
*/ */
private Collection<? extends GrantedAuthority> getAuthoritiesFromToken(String token) { private Collection<? extends GrantedAuthority> getAuthoritiesFromToken(String token) {
try { try {
...@@ -139,6 +175,8 @@ public class JwtTokenProvider { ...@@ -139,6 +175,8 @@ public class JwtTokenProvider {
/** /**
* 验证令牌有效性 * 验证令牌有效性
* @param token
* @return
*/ */
public boolean validateToken(String token) { public boolean validateToken(String token) {
try { try {
...@@ -159,6 +197,7 @@ public class JwtTokenProvider { ...@@ -159,6 +197,7 @@ public class JwtTokenProvider {
/** /**
* 获取签名密钥 * 获取签名密钥
* @return
*/ */
private SecretKey getSigningKey() { private SecretKey getSigningKey() {
try { try {
...@@ -175,6 +214,7 @@ public class JwtTokenProvider { ...@@ -175,6 +214,7 @@ public class JwtTokenProvider {
/** /**
* 生成符合HS512要求的密钥(用于生成配置文件中的密钥) * 生成符合HS512要求的密钥(用于生成配置文件中的密钥)
* @return
*/ */
public static String generateSecureKey() { public static String generateSecureKey() {
try { try {
...@@ -202,7 +242,11 @@ public class JwtTokenProvider { ...@@ -202,7 +242,11 @@ public class JwtTokenProvider {
} }
} }
// 解析 JWT 声明 /**
* 解析 JWT 声明
* @param token
* @return
*/
public Claims parseClaims(String token) { public Claims parseClaims(String token) {
return Jwts.parserBuilder() return Jwts.parserBuilder()
.setSigningKey(getSigningKey()) .setSigningKey(getSigningKey())
...@@ -211,7 +255,11 @@ public class JwtTokenProvider { ...@@ -211,7 +255,11 @@ public class JwtTokenProvider {
.getBody(); .getBody();
} }
// 获取 JWT 头部信息 /**
* 获取 JWT 头部信息
* @param token
* @return
*/
public Map<String, Object> getHeaders(String token) { public Map<String, Object> getHeaders(String token) {
return Jwts.parserBuilder() return Jwts.parserBuilder()
.setSigningKey(getSigningKey()) .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