功能变化: 加入浏览器单点登录

v2.x
猿小天 2023-03-28 21:23:33 +08:00
parent 46a809001a
commit aba0f950b7
2 changed files with 32 additions and 8 deletions

View File

@ -49,6 +49,25 @@
"placeholder": "请输入默认密码",
"setting": null,
"children": []
},
{
"parent": 10,
"title": "开启单点登录",
"key": "single_login",
"value": true,
"sort": 1,
"status": true,
"data_options": null,
"form_item_type": 9,
"rule": [
{
"message": "必填项不能为空",
"required": true
}
],
"placeholder": "请选择",
"setting": null,
"children": []
}
]
},

View File

@ -109,14 +109,19 @@ class LoginSerializer(TokenObtainPairSerializer):
request.user = self.user
# 记录登录日志
save_login_log(request=request)
# 将之前登录用户的token加入黑名单
user = Users.objects.filter(id=self.user.id).values('last_token').first()
last_token = user.get('last_token')
if last_token:
token = RefreshToken(last_token)
token.blacklist()
# 将最新的token保存到用户表
Users.objects.filter(id=self.user.id).update(last_token=data.get('refresh'))
# 是否开启单点登录
if dispatch.get_system_config_values("base.single_login"):
# 将之前登录用户的token加入黑名单
user = Users.objects.filter(id=self.user.id).values('last_token').first()
last_token = user.get('last_token')
if last_token:
try:
token = RefreshToken(last_token)
token.blacklist()
except:
pass
# 将最新的token保存到用户表
Users.objects.filter(id=self.user.id).update(last_token=data.get('refresh'))
return {"code": 2000, "msg": "请求成功", "data": data}
class CustomTokenRefreshView(TokenRefreshView):