我正在用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,
型
1条答案
按热度按时间jei2mxaa1#
您没有主动检查JWT令牌是否有效。这就是为什么它不会自动注销。
你可以用一定的间隔调用API来检查令牌是否仍然有效,或者在下一次API调用时,使用Auth JWT令牌,后端抛出一个UAUTHORIZED状态以通知前端,这样你就可以写当API调用返回UAUTHORIZED时会发生什么。