我想"免费"一个嵌套路由,以便即使没有登录的用户也可以访问此路由。
例如:
posts
- /create
- /edit
- /show
在posts
路线上,我使用了AuthenticatedRouteMixin
。
这样,所有子路径都会自动受到保护。现在我只想让/show
可访问。我知道我可以在/create
和/edit
上使用mixin并将其从posts
路由中移除,但如果您有10个以上的嵌套路由,并且其中只有1个也可用于登录用户,这有点不方便。
你知道其他任何解决方案吗?
如果没有,我想我必须为此写一个额外的mixin ......
谢谢!
答案 0 :(得分:0)
ember-simple-auth的AuthenticatedRouteMixin使用beforeModel钩子来检查session.isAuthenticated是否。您需要覆盖“show”路由中的beforeModel,以便通过绕过AuthenticatedRouteMixin的super()实现来跳过Auth检查。
beforeModel (transition, skipAuthCheck) {
if (!skipAuthCheck) {
return this._super(...arguments, true);
}
}
检查'show'foreModel是否与父路线有关.i.e'posrs',在父路线上实施此检查。
答案 1 :(得分:0)
您可以使用路径参数伪造嵌套路线:
this.route('posts', function() {
this.route('create');
this.route('edit');
});
this.route('posts-show', { path: '/posts/show' });