Session 使用vue和express在会话中保存令牌和用户
我试着做一个认证系统。一切正常,但这是一个小问题,用户每次刷新页面时都会断开连接。我想我已经在会话中保存了令牌和用户,但我不知道如何保存 完整项目如下: 我如何发送数据Session 使用vue和express在会话中保存令牌和用户,session,express,vue.js,token,Session,Express,Vue.js,Token,我试着做一个认证系统。一切正常,但这是一个小问题,用户每次刷新页面时都会断开连接。我想我已经在会话中保存了令牌和用户,但我不知道如何保存 完整项目如下: 我如何发送数据 // Successfuly logged in if (response) { return res.send({ user: existingUser.toJSON(), token: jwtSignUser(existingUser.toJSON()) });
// Successfuly logged in
if (response) {
return res.send({
user: existingUser.toJSON(),
token: jwtSignUser(existingUser.toJSON())
});
}
解决方案:
我解决了这个问题,你们可以在这里找到最终的项目
我更改了将令牌保存到本地存储的方法,问题似乎是您将令牌存储在内存中,而不是本地存储
state.token=token
如果执行刷新,则不会实际存储该存储,但是localStarage将是。这里有一个很好的说法:这将帮助你实现这一目标。阅读文章或tl;博士下面
// src/auth/index.js
import {router} from '../index'
// URL and endpoint constants
const API_URL = 'http://localhost:3001/'
const LOGIN_URL = API_URL + 'sessions/create/'
const SIGNUP_URL = API_URL + 'users/'
export default {
// User object will let us check authentication status
user: {
authenticated: false
},
// Send a request to the login URL and save the returned JWT
login(context, creds, redirect) {
context.$http.post(LOGIN_URL, creds, (data) => {
localStorage.setItem('id_token', data.id_token)
localStorage.setItem('access_token', data.access_token)
this.user.authenticated = true
// Redirect to a specified route
if(redirect) {
router.go(redirect)
}
}).error((err) => {
context.error = err
})
},
signup(context, creds, redirect) {
context.$http.post(SIGNUP_URL, creds, (data) => {
localStorage.setItem('id_token', data.id_token)
localStorage.setItem('access_token', data.access_token)
this.user.authenticated = true
if(redirect) {
router.go(redirect)
}
}).error((err) => {
context.error = err
})
},
// To log out, we just need to remove the token
logout() {
localStorage.removeItem('id_token')
localStorage.removeItem('access_token')
this.user.authenticated = false
},
checkAuth() {
var jwt = localStorage.getItem('id_token')
if(jwt) {
this.user.authenticated = true
}
else {
this.user.authenticated = false
}
},
// The object to be passed as a header for authenticated requests
getAuthHeader() {
return {
'Authorization': 'Bearer ' + localStorage.getItem('access_token')
}
}
}
您可以将其存储在localStorage或cookies中。谢谢您的回答,我会尝试。我不能给你的答案打分,因为名声不好
// src/auth/index.js
import {router} from '../index'
// URL and endpoint constants
const API_URL = 'http://localhost:3001/'
const LOGIN_URL = API_URL + 'sessions/create/'
const SIGNUP_URL = API_URL + 'users/'
export default {
// User object will let us check authentication status
user: {
authenticated: false
},
// Send a request to the login URL and save the returned JWT
login(context, creds, redirect) {
context.$http.post(LOGIN_URL, creds, (data) => {
localStorage.setItem('id_token', data.id_token)
localStorage.setItem('access_token', data.access_token)
this.user.authenticated = true
// Redirect to a specified route
if(redirect) {
router.go(redirect)
}
}).error((err) => {
context.error = err
})
},
signup(context, creds, redirect) {
context.$http.post(SIGNUP_URL, creds, (data) => {
localStorage.setItem('id_token', data.id_token)
localStorage.setItem('access_token', data.access_token)
this.user.authenticated = true
if(redirect) {
router.go(redirect)
}
}).error((err) => {
context.error = err
})
},
// To log out, we just need to remove the token
logout() {
localStorage.removeItem('id_token')
localStorage.removeItem('access_token')
this.user.authenticated = false
},
checkAuth() {
var jwt = localStorage.getItem('id_token')
if(jwt) {
this.user.authenticated = true
}
else {
this.user.authenticated = false
}
},
// The object to be passed as a header for authenticated requests
getAuthHeader() {
return {
'Authorization': 'Bearer ' + localStorage.getItem('access_token')
}
}
}