Vue.js 是否有任何方法可以获取页面的当前nuxt.js中间件?
我很好奇我们是否可以从任何组件访问当前页面的中间件?中间件是在组件之前执行的,并且没有以任何方式在组件内初始化 更新:在Vue.js 是否有任何方法可以获取页面的当前nuxt.js中间件?,vue.js,nuxt.js,Vue.js,Nuxt.js,我很好奇我们是否可以从任何组件访问当前页面的中间件?中间件是在组件之前执行的,并且没有以任何方式在组件内初始化 更新:在auth存储中持久化中间件的状态 export const state = () => ({ isPrivate: false, }) export const mutations = { setPrivatePage(state, value) { state.isPrivate = value }, } export const actions
auth
存储中持久化中间件的状态
export const state = () => ({
isPrivate: false,
})
export const mutations = {
setPrivatePage(state, value) {
state.isPrivate = value
},
}
export const actions = {
privatePage({ commit }) {
commit('setPrivatePage', true)
},
publicPage({ commit }) {
commit('setPrivatePage', false)
},
}
在中间件/auth
中调度操作以设置isPrivate
:
await store.dispatch('auth/privatePage')
我添加了另一个名为public
的中间件,将其设置回false
export default async ({ store }) => {
await store.dispatch('auth/publicPage')
}
最后,要在每个路由上触发public
,请将其添加到numxt.config.js
:
// Router
router: {
middleware: 'public',
},
我不太清楚你想做什么。你能给出一个具体的例子吗?当然@kissu,假设我有一个注销按钮,异步执行操作,然后用一个登录链接切换自身。我想检查的是,为了采取行动,这是否发生在auth中间件页面上。谢谢
@nuxtjs/auth
提供了一个Vuex存储模块,您可以在该模块上访问loggedIn
状态,并查看情况是否如此。您可以在组件内部检查此值,或者,为了获得更全局的解决方案,在Nuxt项目配置上插入整个中间件,并在用户注销后将其踢到登录页面。与其在页面级别上进行,不如在更高的级别上进行,但最终的结果是相同的。该模块还允许通过设置布尔值来拥有“未受保护”的页面。为什么不在中间件中拥有这些页面的数组呢?与其检查中间件以查看用户是否需要重定向,不如在中间件中进行检查:如果页面与中间件中的页面匹配,则重定向他,否则中间件中不需要任何操作。好吧,看起来这是我的另一个好选择,@Ohgodwhy建议跟踪商店中的中间件,或者您建议使用一组私有路由。谢谢您抽出时间,我将尝试两种方法。:)好的,谢谢分享,所以我认为没有办法通过上下文了解中间件采取了什么行动。没有。您需要构建一些东西,例如vuex模块,其中包含对中间件的引用,该中间件执行操作并从中间件提交到存储,以便在到达组件之前从中间件水合。啊哈!是的,这可能对我上面解释的场景有所帮助。谢谢你,我试试看。