Class SecurityContext
java.lang.Object
com.elitesland.ystdms.sys.security.SecurityContext
Security 上下文工具类
提供从 JWT Token 中获取用户信息的能力,以及通过 Feign 获取扩展信息
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic voidclear()getAllOu()获取所有公司信息static <T> Tstatic SysEmployeeDTO获取当前登录用户的员工信息static List<SysOrgRespRpcDTO> 获取当前员工的所有部门信息static SysOrgRespRpcDTO获取当前用户所属的组织信息获取当前用户所属的公司信息static StringgetDept()获取部门static SysEmployeeDTOgetEmployee(String username) 获取指定用户的员工信息static SysEmployeeDTOgetEmployeeByMobile(String mobile) 根据手机号获取员工信息static SysEmployeeDTOgetEmployeeByUserId(UUID userId) 根据 userId 获取员工信息static List<SysOrgRespRpcDTO> getEmployeeOrgs(UUID employeeId) 获取员工的所有部门信息(通过 sys_employee_org 关联表查询)static SysUserDTO获取外部系统的用户信息static org.springframework.security.oauth2.jwt.JwtgetJwt()static UUIDgetNewUserIdByUsername(String username) Deprecated.static SysOrgRespRpcDTO获取指定ID的组织信息static SysOrgRespRpcDTOgetOrgByCode(String code) 根据组织编码获取组织信息static String获取原始令牌字符串 优先返回已解析的JWT令牌,如果不存在则返回原始令牌字符串getRoles()获取角色列表static Stringstatic SysEmployeeDTO获取本地系统的员工信息(SysEmployee)static SysUserBasicDTO获取本地系统的用户信息(SysUserBasicDTO)static SysUserBasicDTOgetSysUserByUsername(String username) 根据用户名查询SysUser记录(从本系统sys_user表) 用于JWT解析后获取本地用户信息,确保用户信息以本系统为准static String获取Token类型static String获取用户ID(从JWT的subject中获取)static String获取用户名static booleanhasToken()判断是否有令牌(无论是解析后的JWT还是原始令牌)static boolean判断当前是否已认证(有有效的JWT或有外部系统用户信息或有本地用户信息)static voidsetExternalUser(SysUserDTO user) 设置外部系统的用户信息 当JWT解析失败(外部系统的令牌)时,通过Feign获取用户信息后设置static voidsetJwt(org.springframework.security.oauth2.jwt.Jwt jwt) static voidsetRawToken(String token) 设置原始令牌字符串 用于JWT解析失败时仍能将令牌传递给Feign调用static void设置 SecurityContextService 实例 通过配置类手动调用static voidsetSysEmployee(SysEmployeeDTO employee) 设置本地系统的员工信息(SysEmployee) 通过NewUserId从sys_employee表查询,用于填充CurrentUserContextstatic voidsetSysUser(SysUserBasicDTO user) 设置本地系统的用户信息(SysUserBasicDTO) 通过username从sys_user表查询,用于覆盖外部系统的用户信息
-
Constructor Details
-
SecurityContext
public SecurityContext()
-
-
Method Details
-
setSecurityContextService
设置 SecurityContextService 实例 通过配置类手动调用 -
setJwt
public static void setJwt(org.springframework.security.oauth2.jwt.Jwt jwt) -
getJwt
public static org.springframework.security.oauth2.jwt.Jwt getJwt() -
setRawToken
设置原始令牌字符串 用于JWT解析失败时仍能将令牌传递给Feign调用- Parameters:
token- 原始JWT令牌字符串
-
setExternalUser
设置外部系统的用户信息 当JWT解析失败(外部系统的令牌)时,通过Feign获取用户信息后设置- Parameters:
user- 外部系统用户信息
-
getExternalUser
获取外部系统的用户信息- Returns:
- 外部系统用户信息,如果不存在则返回null
-
setSysEmployee
设置本地系统的员工信息(SysEmployee) 通过NewUserId从sys_employee表查询,用于填充CurrentUserContext- Parameters:
employee- 本地员工信息
-
getSysEmployee
获取本地系统的员工信息(SysEmployee)- Returns:
- 本地员工信息,如果不存在则返回null
-
setSysUser
设置本地系统的用户信息(SysUserBasicDTO) 通过username从sys_user表查询,用于覆盖外部系统的用户信息- Parameters:
user- 本地SysUser信息
-
getSysUser
获取本地系统的用户信息(SysUserBasicDTO)- Returns:
- 本地SysUser信息,如果不存在则返回null
-
getSysUserByUsername
根据用户名查询SysUser记录(从本系统sys_user表) 用于JWT解析后获取本地用户信息,确保用户信息以本系统为准- Parameters:
username- 用户名- Returns:
- SysUserBasicDTO,如果不存在则返回null
-
getNewUserIdByUsername
Deprecated.根据用户名获取SysUser的UUID类型的ID(NewUserId) 用于外部系统JWT解析后获取本地用户ID- Parameters:
username- 用户名- Returns:
- SysUser的UUID类型的ID,如果不存在则返回null
-
getRawToken
获取原始令牌字符串 优先返回已解析的JWT令牌,如果不存在则返回原始令牌字符串- Returns:
- 令牌字符串,如果都没有则返回null
-
hasToken
public static boolean hasToken()判断是否有令牌(无论是解析后的JWT还是原始令牌) -
clear
public static void clear() -
getSubject
-
getUserId
获取用户ID(从JWT的subject中获取) -
getUsername
获取用户名 -
getDept
获取部门 -
getRoles
获取角色列表 -
getTokenType
获取Token类型 -
isAuthenticated
public static boolean isAuthenticated()判断当前是否已认证(有有效的JWT或有外部系统用户信息或有本地用户信息) -
getClaim
-
getCurrentEmployee
获取当前登录用户的员工信息- Returns:
- 员工信息,如果未登录或查询失败则返回 null
-
getEmployee
获取指定用户的员工信息- Parameters:
username- 用户名- Returns:
- 员工信息,如果查询失败则返回 null
-
getEmployeeByUserId
根据 userId 获取员工信息 -
getEmployeeByMobile
根据手机号获取员工信息 -
getCurrentOrg
获取当前用户所属的组织信息- Returns:
- 组织信息,如果未登录或查询失败则返回 null
-
getOrg
获取指定ID的组织信息- Parameters:
orgId- 组织ID- Returns:
- 组织信息,如果查询失败则返回 null
-
getOrgByCode
根据组织编码获取组织信息- Parameters:
code- 组织编码- Returns:
- 组织信息,如果查询失败则返回 null
-
getCurrentOu
获取当前用户所属的公司信息- Returns:
- 公司信息列表,如果未登录或查询失败则返回 null
-
getAllOu
获取所有公司信息- Returns:
- 公司信息列表,如果查询失败则返回 null
-
getEmployeeOrgs
获取员工的所有部门信息(通过 sys_employee_org 关联表查询)- Parameters:
employeeId- 员工ID- Returns:
- 部门信息列表,如果查询失败则返回 null
-
getCurrentEmployeeOrgs
获取当前员工的所有部门信息- Returns:
- 部门信息列表,如果查询失败则返回 null
-
getSysUserByUsername(String)替代