File tree Expand file tree Collapse file tree 2 files changed +5
-2
lines changed Expand file tree Collapse file tree 2 files changed +5
-2
lines changed Original file line number Diff line number Diff line change @@ -47,7 +47,7 @@ async def refresh_token(request: Request) -> ResponseSchemaModel[GetNewToken]:
47
47
return response_base .success (data = data )
48
48
49
49
50
- @router .post ('/logout' , summary = '用户登出' , dependencies = [ DependsJwtAuth ] )
50
+ @router .post ('/logout' , summary = '用户登出' )
51
51
async def logout (request : Request , response : Response ) -> ResponseModel :
52
52
await auth_service .logout (request = request , response = response )
53
53
return response_base .success ()
Original file line number Diff line number Diff line change @@ -197,14 +197,17 @@ async def refresh_token(*, request: Request) -> GetNewToken:
197
197
"""
198
198
refresh_token = request .cookies .get (settings .COOKIE_REFRESH_TOKEN_KEY )
199
199
if not refresh_token :
200
- raise errors .TokenError (msg = 'Refresh Token 已过期,请重新登录' )
200
+ raise errors .RequestError (msg = 'Refresh Token 已过期,请重新登录' )
201
201
token_payload = jwt_decode (refresh_token )
202
202
async with async_db_session () as db :
203
203
user = await user_dao .get (db , token_payload .id )
204
204
if not user :
205
205
raise errors .NotFoundError (msg = '用户不存在' )
206
206
elif not user .status :
207
207
raise errors .AuthorizationError (msg = '用户已被锁定, 请联系统管理员' )
208
+ if not user .is_multi_login :
209
+ if await redis_client .keys (match = f'{ settings .TOKEN_REDIS_PREFIX } :{ user .id } :*' ):
210
+ raise errors .ForbiddenError (msg = '此用户已在异地登录,请重新登录并及时修改密码' )
208
211
new_token = await create_new_token (
209
212
refresh_token ,
210
213
token_payload .session_uuid ,
You can’t perform that action at this time.
0 commit comments