【发布时间】:2019-03-27 06:37:08
【问题描述】:
我正在使用 JWT 身份验证,使用 ember-simple-auth 来实现用户身份验证。我在下面的项目中提供了必要的细节。
当验证正确时,一个 jwt 令牌从由djangorest 组成的后端传递,并且它只包含一个令牌。
/app/authenticators/jwt.js
import Ember from 'ember';
import Base from 'ember-simple-auth/authenticators/base';
import config from '../config/environment';
const { RSVP: { Promise }, $: { ajax }, run } = Ember;
export default Base.extend({
tokenEndpoint: `http://localhost:8000/auth`,
restore(data) {
return new Promise((resolve, reject) => {
// console.log(data.token); token seems empty
if (!Ember.isEmpty(data.token)) {
resolve(data);
} else {
reject();
}
});
},
authenticate(creds) {
const { identification, password } = creds;
const data = JSON.stringify({
email: identification,
password: password
});
const requestOptions = {
url: this.tokenEndpoint,
type: 'POST',
data,
contentType: 'application/json',
dataType: 'json'
};
return new Promise((resolve, reject) => {
ajax(requestOptions).then((response) => {
// console.log(response); verified
const { jwt } = response;
// Wrapping aync operation in Ember.run
run(() => {
resolve({
token: jwt
});
});
}, (error) => {
// Wrapping aync operation in Ember.run
run(() => {
reject(error);
});
});
});
},
invalidate(data) {
return Promise.resolve(data);
}
});
/app/authorizer/custom.js
import Base from 'ember-simple-auth/authorizers/base';
// import Ember from 'ember';
import { inject } from '@ember/service';
export default Base.extend({
session: inject('session'),
authorize(data, block) {
const { token } = data
if (this.get('session.isAuthenticated') && token) {
consol.log(token);
// this._super(...arguments);
block('Authorization', `JWT ${token}`);
console.log(Authorization);
}
}
});
当我尝试使用 session.data.authenticated.token 访问令牌时,它显示值 undefined。
【问题讨论】:
-
请阅读Under what circumstances may I add “urgent” or other similar phrases to my question, in order to obtain faster answers? - 总结是这不是解决志愿者的理想方式,并且可能会适得其反。请不要将此添加到您的问题中。
标签: ember.js ember-simple-auth