我正在使用select top (1) with ties 1 as rownum, salary, name, endmonth, name
from employee e
order by e.endmonth desc;
函数解析的具有JWT令牌和cookie的Nuxt项目上设置基本身份验证。
使用电子邮件/密码登录后,按预期方式工作,触发nuxtServerInit
突变,并将适当的setUser
对象存储在user
中。
重新加载时,state.auth.user
将从nuxtServerInit
获取jwt令牌,调用req.headers.cookies
方法并标识user.Works,就像一个超级按钮。
当我碰到GET
端点时,问题开始了。 /logout
设置为false并且Im已有效注销...但是如果刷新,我将使用先前的用户数据再次登录。即使我的Cookie完全是空的(在下面的代码中,state.auth.user
和user
都在注销并刷新后按预期cookie
)
所以我真的不明白为什么我的undefined
回到了初始值...
store / index.js
state.auth.user
modules / auth.js
import Vuex from "vuex";
import auth from "./modules/auth";
import axios from "~/plugins/axios";
const cookieparser = process.server ? require("cookieparser") : undefined;
const END_POINT = "api/users";
const createStore = () => {
return new Vuex.Store({
actions: {
async nuxtServerInit({ commit, dispatch}, { req }) {
let cookie = null;
console.log(req.headers.cookie)
if (req.headers.cookie) {
const parsed = cookieparser.parse(req.headers.cookie);
try {
cookie = JSON.parse(parsed.auth);
console.log("cookie", cookie)
const {accessToken} = cookie
const config = {
headers: {
Authorization: `Bearer ${accessToken}`
}
}
const response = await axios.get(`${END_POINT}/current`, config)
const user = response.data
console.log("user nuxt server init", user)
await commit('setUser', user)
} catch (err) {
// No valid cookie found
console.log(err);
}
}
}
},
modules: {
auth
}
});
};
export default createStore;
答案 0 :(得分:0)
我注销用户的方式是创建一个名为 clearToken 的变更并在操作中提交给它:
状态:
token: null,
突变:
clearToken(state) {
state.token = null
},
操作:
logout(context) {
context.commit('clearToken')
Cookie.remove('token')
}
通过这种方式,您的令牌状态会恢复为 null。