如何在Aurelia中的请求的URL上显示未经授权的视图

时间:2015-09-15 22:23:04

标签: javascript routing aurelia

如果在Aurelia canActivate方法内部,则确定用户不应该能够查看所请求的页面。如何向该用户显示“未授权”页面,不允许他们访问该网址?

我不想返回new Redirect("#/unauthorized"),因为用户无法看到他们不允许访问哪个网址,并且我在网址中会有一些导航栏状态丢失。

注意:一个可能的答案可能是,“你这样做是错的”。 :)

1 个答案:

答案 0 :(得分:1)

您希望在不更改网址的情况下显示未经授权的网页。因此,如果用户访问“/ restricted-page”并且不允许他们看到它,请显示未经授权的模板而不是实际页面。

要实现这一点,如果用户未通过相应的检查,您可以在canActivate方法中在ViewModel本身上设置模板值。然后在ViewModel的getViewStrategy范围内,您将检查是否已设置此值并显示该视图,如果没有,则显示常规视图。

export class ViewModel {
  viewTemplate = "./view-model.html";

  canActivate(params, routeConfig) {
    if (!canViewPage) {
      this.viewTemplate = "./401-unauthorized.html";
    }
  }

  getViewStrategy() {
    return this.viewTemplate;
  }  
}

为了进一步简化此操作,您只需在getViewStrategy内设置canActivate功能。

export class ViewModel {
  canActivate(params, routeConfig) {
    if (!canViewPage) {
      this.getViewStrategy = function() { return "./401-unauthorized.html"; };
    }
  }
}