如果在Aurelia canActivate
方法内部,则确定用户不应该能够查看所请求的页面。如何向该用户显示“未授权”页面,不允许他们访问该网址?
我不想返回new Redirect("#/unauthorized")
,因为用户无法看到他们不允许访问哪个网址,并且我在网址中会有一些导航栏状态丢失。
注意:一个可能的答案可能是,“你这样做是错的”。 :)
答案 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"; };
}
}
}