feat: 更新token验证逻辑,支持jwks类型token并增强用户验证
This commit is contained in:
@@ -53,10 +53,27 @@ export class UserSecret {
|
||||
* @returns
|
||||
*/
|
||||
static async verifyToken(token: string) {
|
||||
if (token?.includes?.('.')) {
|
||||
if (oauth.getTokenType(token) === 'jwks') {
|
||||
// 先尝试作为jwt token验证,如果验证成功则直接返回用户信息
|
||||
console.log('[jwksManager] 验证token');
|
||||
return await jwksManager.verify(token);
|
||||
const verified = await jwksManager.verify(token);
|
||||
if (verified) {
|
||||
const sub = verified.sub;
|
||||
const userId = sub.split(':')[1];
|
||||
const user = await User.findByPk(userId);
|
||||
if (!user) {
|
||||
console.warn(`[jwksManager] 验证token成功,但用户不存在,userId: ${userId}`);
|
||||
return null;
|
||||
}
|
||||
const oauthUser = oauth.getOauthUser({
|
||||
id: user.id,
|
||||
username: user.username,
|
||||
type: user.type,
|
||||
});
|
||||
return oauthUser;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
if (!oauth.isSecretKey(token)) {
|
||||
return await oauth.verifyToken(token);
|
||||
|
||||
Reference in New Issue
Block a user