我有一个个人资料页面,我正在向网址/profile/foo
的所有用户显示,但是一旦加载,我正在做一些检查以确定查看该个人资料的用户是否是其所有者。如果是这样,我想显示一个编辑按钮,在同一页面中将显示另一个视图并将路线更改为/profile/foo/edit
但是我想限制在/profile/foo/edit
显示的任何内容,如果该用户不是所有者或者所有者未首先查看/profile/foo
,因为加载所有配置文件信息的控制器已配置为该路由。
我确定知道处理编辑的控制器以及/ profile / foo / edit的编辑界面必须延迟加载,具体取决于用户是否是个人资料的所有者。
我最初没有在我的模块上运行.config来设置路由,因为我不知道用户是否是所有者所以我不得不将ng-controller硬编码到一个真正应该是ng-view的DOM元素上最初不能,因为我不想加载编辑视图部分。
所以我的问题是如何在运行时设置这种路由(切换控制器和视图)以及实际加载控制器和视图。仅当用户是个人资料的所有者时。
答案 0 :(得分:0)
有很多方法可以做到这一点。我强烈建议使用ui-router,因为它是事实上推荐的第三方插件,用于管理Angular项目中的路由。
然后你将使用路由配置锁定路由,如下所示:
authorize: function(accessLevelReq) {
if (_.isNull(service.currentUserAccessLevels)) {
populateUserAccessLevels('public');
}
var authenticated = false;
_.each(accessLevelReq, function(value){
if(service.currentUserAccessLevels[value]) {
authenticated = true;
}
});
return authenticated;
}
然后在路线更改时,您将检查路线:
public class JunctionBox() {
}
使用某种安全服务:
{{1}}
幸运的是,我有一个种子项目,说明了这个确切的用例。 https://github.com/thinkjones/meanp-seed