登录系统相关

登录系统

jwt生成token,token中携带用户信息

    def generate_token(self, user_id, name, role, expires_in=60*60*24, token_type='access_token', secret_key=base_token_secret):
        now = int(time.time())
        payload = {
            # 'exp': now + expires_in,
            'iat': now,
            'user_id': user_id,
            'name': name,
            'role': role,
            'token_type': token_type,
            'device_type': DEVICE_TYPE
        }
        token_str = jwt.encode(payload, secret_key, algorithm='HS256')
        return token_str

解析token

    def parse_token(self, token_str, secret_key=base_token_secret):
        try:
            decoded_token = jwt.decode(token_str, secret_key, algorithms=['HS256'])
            return True, decoded_token
        except Exception as e:
            return False, None

登录种类:

1、一个账户只允许在一个设备或只允许在一处登录,此时需要将用户user_id+token类型,如 " 3-token-access_token " 为key,token为value存入redis,使用redis控制一个账号只允许一处登录,别的地方登录就会把上一个登录挤掉
2、一个账号允许多出登录,不影响之前登录的用户,此时需要使用user_id+tokek类型+token作为key存入redis,如” 3-token-access-token “ value为用户的user_id,username,role等等信息,如果要用户退出登录可以使用redis模糊删除直接删除user_id+token来进行模糊删除

posted @ 2024-07-16 14:01  李爱财  阅读(10)  评论(0)    收藏  举报