【发布时间】:2019-05-15 09:33:37
【问题描述】:
在我的 api 中,我有一个 /users 端点,它当前显示当前注册的所有用户的(例如地址)详细信息。这需要由(Ember)应用程序访问(例如查看用户送货地址),但由于显而易见的原因,我不能允许任何人能够查看数据(无论是通过可浏览的 api 还是纯 JSON,如果我们将视图限制为仅使用 JSONRenderer)。我认为我不能使用身份验证和权限,因为应用程序首先需要从前端应用程序(我使用基于令牌的身份验证)登录用户。例如,如果我在 Django 中的用户视图上使用身份验证,我将无法从 Ember 登录。
我错过了什么吗?
更新
你好,我想回来看看这个。
对于 Ember 端的身份验证,我在 Django 中使用 Ember 简单身份验证和基于令牌的身份验证。一切正常 - 我可以登录 Ember 应用程序并访问令牌。
我需要做的是访问用户;为此,我在这里遵循了代码示例https://github.com/simplabs/ember-simple-auth/blob/master/guides/managing-current-user.md
我已经在 Postman 中测试了基于令牌的身份验证,使用我登录用户的令牌 - 并且可以访问 /users 端点。 (这是返回所有用户 - 我想要的只是我要为其返回令牌的用户,但那是以后的事!)。
问题是如何在任何 Ember 请求中传递(令牌)标头,例如
this.store.findAll('user') .... etc
这显然目前没有发生,我不知道如何解决这个问题。
更新
修复它。原来我的应用程序适配器中的授权函数没有设置标头,因此更改了代码以明确设置标头:
authorize(xhr) {
let { access_token } = this.get('session.data.authenticated');
if (isPresent(access_token)) {
xhr.setRequestHeader('Authorization', `Token ${access_token}`);
}
},
headers: computed('session.data.authenticated.token', function () {
const headers = {};
if (this.session.isAuthenticated) {
headers['Authorization'] = `Token ${this.session.data.authenticated.token}`
}
return headers;
})
【问题讨论】:
标签: ember.js django-rest-framework