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

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": "请输入默认密码", "placeholder": "请输入默认密码",
"setting": null, "setting": null,
"children": [] "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 request.user = self.user
# 记录登录日志 # 记录登录日志
save_login_log(request=request) save_login_log(request=request)
# 将之前登录用户的token加入黑名单 # 是否开启单点登录
user = Users.objects.filter(id=self.user.id).values('last_token').first() if dispatch.get_system_config_values("base.single_login"):
last_token = user.get('last_token') # 将之前登录用户的token加入黑名单
if last_token: user = Users.objects.filter(id=self.user.id).values('last_token').first()
token = RefreshToken(last_token) last_token = user.get('last_token')
token.blacklist() if last_token:
# 将最新的token保存到用户表 try:
Users.objects.filter(id=self.user.id).update(last_token=data.get('refresh')) 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} return {"code": 2000, "msg": "请求成功", "data": data}
class CustomTokenRefreshView(TokenRefreshView): class CustomTokenRefreshView(TokenRefreshView):