django 令牌到期时React jwt用户未注销

camsedfj  于 2023-08-08  发布在  Go
关注(0)|答案(1)|浏览(127)

我正在用django rest框架和react做一个应用程序,我发现jwt是一种设置授权的方法。要做到这一点,当用户登录,我设置在localStorage令牌.我的问题是,当令牌到期时,用户不注销。
前端

let loginUser = async (e )=> {
        e.preventDefault()
        try {
            const res = await axios.post('http://127.0.0.1:8000/api/token/', {
                headers: {
                    'Content-type': 'application/json'
                },
                username: e.target.username.value,
                password: e.target.password.value
            })
            setAuthTokens(res.data)
            setUser(jwt_decode(res.data.access))
            localStorage.setItem('authTokens', JSON.stringify(res.data))
            navigate('/')
        } catch {
            alert('Something went wrong')
        }
    }

字符串
Django

SIMPLE_JWT = {
    "ACCESS_TOKEN_LIFETIME": timedelta(seconds=4),
    "REFRESH_TOKEN_LIFETIME": timedelta(days=90),
    "ROTATE_REFRESH_TOKENS": True,
    "BLACKLIST_AFTER_ROTATION": True,
    "UPDATE_LAST_LOGIN": False,

jei2mxaa

jei2mxaa1#

您没有主动检查JWT令牌是否有效。这就是为什么它不会自动注销。
你可以用一定的间隔调用API来检查令牌是否仍然有效,或者在下一次API调用时,使用Auth JWT令牌,后端抛出一个UAUTHORIZED状态以通知前端,这样你就可以写当API调用返回UAUTHORIZED时会发生什么。

相关问题