Skip to content

Commit 82922ce

Browse files
committed
feat:新增限制同一账号不能同时登录示例代码
1 parent 0d6f81c commit 82922ce

File tree

2 files changed

+5
-8
lines changed

2 files changed

+5
-8
lines changed

dash-fastapi-backend/module_admin/controller/login_controller.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@ async def login(request: Request, form_data: CustomOAuth2PasswordRequestForm = D
4747
await request.app.state.redis.set(f'access_token:{session_id}', access_token,
4848
ex=timedelta(minutes=JwtConfig.REDIS_TOKEN_EXPIRE_MINUTES))
4949
# 此方法可实现同一账号同一时间只能登录一次
50-
# await request.app.state.redis.set(f'{result.user_id}_access_token', access_token, ex=timedelta(minutes=30))
51-
# await request.app.state.redis.set(f'{result.user_id}_session_id', session_id, ex=timedelta(minutes=30))
50+
# await request.app.state.redis.set(f'access_token:{result[0].user_id}', access_token,
51+
# ex=timedelta(minutes=JwtConfig.REDIS_TOKEN_EXPIRE_MINUTES))
5252
logger.info('登录成功')
5353
# 判断请求是否来自于api文档,如果是返回指定格式的结果,用于修复api文档认证成功后token显示undefined的bug
5454
request_from_swagger = request.headers.get('referer').endswith('docs') if request.headers.get('referer') else False

dash-fastapi-backend/module_admin/service/login_service.py

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -75,15 +75,12 @@ async def get_current_user(request: Request = Request, token: str = Depends(oaut
7575
raise AuthException(data="", message="用户token不合法")
7676
redis_token = await request.app.state.redis.get(f'access_token:{session_id}')
7777
# 此方法可实现同一账号同一时间只能登录一次
78-
# redis_token = await request.app.state.redis.get(f'{user.user_basic_info[0].user_id}_access_token')
79-
# redis_session = await request.app.state.redis.get(f'{user.user_basic_info[0].user_id}_session_id')
78+
# redis_token = await request.app.state.redis.get(f'access_token:{user.user_basic_info[0].user_id}')
8079
if token == redis_token:
8180
await request.app.state.redis.set(f'access_token:{session_id}', redis_token,
8281
ex=timedelta(minutes=JwtConfig.REDIS_TOKEN_EXPIRE_MINUTES))
83-
# await request.app.state.redis.set(f'{user.user_basic_info[0].user_id}_access_token', redis_token,
84-
# ex=timedelta(minutes=30))
85-
# await request.app.state.redis.set(f'{user.user_basic_info[0].user_id}_session_id', redis_session,
86-
# ex=timedelta(minutes=30))
82+
# await request.app.state.redis.set(f'access_token:{user.user_basic_info[0].user_id}', redis_token,
83+
# ex=timedelta(minutes=JwtConfig.REDIS_TOKEN_EXPIRE_MINUTES))
8784

8885
return CurrentUserInfoServiceResponse(
8986
user=user.user_basic_info[0],

0 commit comments

Comments
 (0)