【发布时间】:2017-09-11 17:54:51
【问题描述】:
我正在努力在 TypeScript 和 RxJs 中实现一个从后端返回 Observable 数据的函数。我需要根据用户角色查询不同的端点。我正在使用 angular-JWT 进行身份验证。我有两个问题:
目前代码编译良好,但第二对请求不断被取消。为什么?
还有比 zip + throw + catch 更好的方法吗?我一直在搜索 rxjs 文档,但一无所获。
代码:
public getData(): Observable<Data> {
return Observable.zip(
this.userService.getCurrentUser(),
this.authHttp.get(this.adminUrl),
(user, adminResponse) => {
if (user.role == 'admin') {
return adminResponse.json() as BackendResponse
} else {
throw "You are not an admin";
}
})
.catch(error => {
return Observable.zip(
this.userService.getCurrentUser(),
this.authHttp.get(this.normalUrl),
(user, normalResponse) => {
if (user.role == 'normal') {
return normalResponse.json() as BackendResponse
} else {
throw "You are not allowed to get this resource";
}
})
})
.catch(error => {
return Observable.throw(error)
});
}
管理端点为管理员和普通用户返回一些数据(在我的项目中是必需的),但是如果标准用户查询他们的特殊 API,他们可以获得更多数据。
【问题讨论】:
-
服务器应该拒绝任何未经授权的请求。
标签: angular rxjs user-roles