我正在尝试通过building this tutorial app了解VueJS路由器模型。如果您尝试打开像 https://example.com/meetups 这样的直接链接,则该应用会将您重定向到主页,即使您已经登录并获得授权。为什么会这样,以及如何打开请求的URL?
auth-guard.js
import {store} from '../store'
export default (to, from, next) => {
if (store.getters.user) {
next()
} else {
next('/signin')
}
}
index.js
Vue.use(Router)
export default new Router({
routes: [
{
path: '/',
name: 'Home',
component: Home
},
{
path: '/signup',
name: 'Signup',
component: Signup
},
{
path: '/signin',
name: 'Signin',
component: Signin
},
{
path: '/meetups',
name: 'Meetups',
component: Meetups,
beforeEnter: AuthGuard
},
{
path: '/meetup/new',
name: 'CreateMeetup',
component: CreateMeetup,
beforeEnter: AuthGuard
},
{
path: '/meetups/:id',
name: 'Meetup',
props: true,
component: Meetup,
beforeEnter: AuthGuard
},
{
path: '/profile',
name: 'Profile',
component: Profile,
beforeEnter: AuthGuard
}
],
mode: 'history'
})
答案 0 :(得分:1)
如果商店class Program
{
static void Main(string[] args)
{
//Memory usage 7.1 MB
Console.WriteLine("Hit enter to allocate");
Console.ReadKey();
byte[] data = new byte[1024*1024]; //Memory still 7.1 MB
Console.WriteLine("Hit Enter to Fill with zeros!");
Console.ReadKey();
Array.Clear(data, 0, data.Length); //Memory now 8.1 MB
Console.WriteLine("1MB filled, hit enter to exit");
Console.ReadKey();
}
}
为空,则auth-guard.js
会将某人重定向到登录页面。
商店用户何时更新?
main.js内部:
user
firebase.auth().onAuthStateChanged((user) => {
if (user) {
this.$store.dispatch('autoSignIn', user)
}
})
方法是 async ,这意味着它可能在您要求浏览器转到受{{ 1}}。
如果打开新标签页或窗口并输入受保护页面的网址,通常会发生这种情况。
如果首先将网站完全加载到不受保护的页面上(例如,/ signin),然后用户尝试单击受保护的页面(例如,/ meetups),则此行为将正常工作。当用户单击链接时,很有可能onAuthStateChanged
方法将返回并提交到商店(auth-guard.js
),从而使onAuthStateChanged
能够正确执行。>
编辑
解决此问题的一种方法是仅在this.$store.dispatch('autoSignIn', user)
这样返回用户后,实例化Vue应用程序:
main.js
onAuthStateChanged