如何使用Meteor的铁路由器为未登录的用户在onBeforeAction中的页面之间移动?

时间:2014-07-22 21:00:44

标签: meteor iron-router

我正在使用这种方法重定向未登录到其他页面的用户:

Redirecting not logged-in users with iron-router... Again

代码:

EXCLUDED = ['signin', 'signup', 'forgotPassword', 'terms']
Router.onBeforeAction must_login, except: EXCLUDED
must_login = (pause) ->
  if Meteor.user()
    @setLayout @lookupLayoutTemplate() or 'blank'
  else
    if localStorage.getItem('has_logged_in_before') or Router.current().path is '/signin'
      @setLayout 'signin'
    else
      @setLayout 'signup'
    pause()

对于最初的&#34; /&#34;页面加载,signinsignup布局已正确呈现,具体取决于浏览器的localStorage。但是,注册页面上有一个链接:<a href="/signin">。单击它时,URL会更改,但页面保持不变,并且不会重新运行onBeforeAction。让页面更改的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

我的猜测是Router.current()。路径仍然是&#34; /&#34;当你检查它。它将在&#34; onBeforeAction&#34;之后发生变化。已完成,因此,if else检查会让您再次注册。 尝试

if localStorage.getItem('has_logged_in_before') or this.route.name is 'signin'

如果它不能运行console.log,那么Router.current()。路径会仔细检查我的怀疑,并试着找出如何获取请求的URL。

让我知道调试是如何进行的!