如果经过身份验证的 NodeJS 则重定向
Posted
技术标签:
【中文标题】如果经过身份验证的 NodeJS 则重定向【英文标题】:Redirect If Authenticated NodeJS 【发布时间】:2018-05-11 19:15:43 【问题描述】:我正在使用以下技术
NodeJS ExpressJS VueJS ngnix我将x-access-token
存储在localstorage
中。
当用户访问站点www.example.com
时,vuejs
组件会执行以下操作
通过调用身份验证端点来验证用户是否已登录
如果通过验证,它会重定向到www.example.com/controlpanel
当然,问题是 vuejs
组件需要一段时间才能加载,因此页面加载后会被重定向。
有没有办法以更清洁的方式处理上述情况。甚至使用ngnix
?
谢谢
【问题讨论】:
你在使用beforeRouteEnter
导航卫士
@VamsiKrishna 我根本没有使用vue-router
。我正在处理 expressjs
中的路由
【参考方案1】:
在访问首页时渲染的组件中(根路由/
)
添加beforeRouteEnter()
导航守卫如下:
//in root route component options
beforeRouteEnter(to, from, next)
myAjax.get('/auth').then((res) =>
if(res.data.user)
//user logged in
next('/controlpanel');
else
next('/');
);
这个守卫在路由组件被渲染之前被调用并且只有当你调用next()
时才会被确认和渲染
请记住,您将无法访问组件的 vue 实例,因为组件尚未创建
要访问beforeRouteEnter()
中的 vue 实例,请执行以下操作:
beforeRouteEnter(to, from, next)
next(vm =>
//acess the component's instance using vm
欲了解更多信息,请查看In-Component Guards
【讨论】:
但我没有使用vue-router
是的!它确实有效,但仍然存在滞后。你知道不涉及vue
的解决方案吗?
@user3052526 执行异步操作时会有延迟...。更好的解决方案是显示加载器
我想我现在会实施这个解决方案。如果您想到不涉及 vuejs 的任何事情,请分享。谢谢大佬!
@user3052526 是的......如果您找到更好的解决方案,请随时在我的答案中添加编辑:)以上是关于如果经过身份验证的 NodeJS 则重定向的主要内容,如果未能解决你的问题,请参考以下文章
Spring Security:如果身份验证失败,则重定向到登录页面
Nodejs和PassportJs:如果身份验证失败,则不会调用passport.authenticate后重定向中间件