使AuthenticatedRouteMixin内的嵌套路由可访问

时间:2018-06-10 17:52:35

标签: ember.js ember-simple-auth

我想"免费"一个嵌套路由,以便即使没有登录的用户也可以访问此路由。

例如:

posts - /create - /edit - /show

posts路线上,我使用了AuthenticatedRouteMixin。 这样,所有子路径都会自动受到保护。现在我只想让/show可访问。我知道我可以在/create/edit上使用mixin并将其从posts路由中移除,但如果您有10个以上的嵌套路由,并且其中只有1个也可用于登录用户,这有点不方便。

你知道其他任何解决方案吗?

如果没有,我想我必须为此写一个额外的mixin ......

谢谢!

2 个答案:

答案 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' });
相关问题