我正在使用这种方法重定向未登录到其他页面的用户:
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()
对于最初的" /"页面加载,signin
或signup
布局已正确呈现,具体取决于浏览器的localStorage。但是,注册页面上有一个链接:<a href="/signin">
。单击它时,URL会更改,但页面保持不变,并且不会重新运行onBeforeAction。让页面更改的最佳方法是什么?
答案 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。
让我知道调试是如何进行的!