使用ember-simple-auth-token的令牌请求将不包含标识字段

时间:2017-02-24 04:52:35

标签: ember.js ember-simple-auth

A有一个Ember(v2.12.0-beta.1)应用程序,它使用ember-simple-auth-token来请求JWT。

重要的部分发生在登录控制器中。

export default Ember.Controller.extend({
    session: Ember.inject.service(),

    // Properties
    username: 'user1',
    password: 'password123',

    // Actions
    actions: {
        login(username, password) {
            console.log('Attempting login...');

            let creds = this.getProperties('username', 'password');
            let authenticator = 'authenticator:jwt';

            this.get('session').authenticate(authenticator, creds).then(function() {
                console.log('LOGIN SUCCESS')
            }, function() {
                console.log('LOGIN FAIL')
            });
        }
    }
});

提交表单时,浏览器会发出请求,我的后端会收到该请求。

问题是请求中只包含密码。请求正文的格式为{"password":"password123"},但应该看起来像{"username":"user1","password":"password123"}。当然,登录尝试失败并打印LOGIN FAIL

为什么用户名不包含在令牌请求中?

我尝试使用早期版本的ember-simple-auth-token和ember-simple-auth。

这是我的配置:

ENV['ember-simple-auth'] = {
    authorizer: 'authorizer:token',
};

ENV['ember-simple-auth-token'] = {
    serverTokenEndpoint: 'http://127.0.0.1:6003/token',
    identificationField: 'username',
    passwordField: 'password',
    tokenPropertyName: 'token',
    authorizationPrefix: 'Bearer ',
    authorizationHeaderName: 'Authorization',
    refreshAccessTokens: false,
};

1 个答案:

答案 0 :(得分:1)

ember-simple-auth-token期望传递给authenticate的凭据对象格式为:

{
   identification: <username>,
   password: <password>
}

所以你的代码应该是这样的:

actions: {
    login(username, password) {
        console.log('Attempting login...');

        let creds = {
            identification: username,
            password: password
        };

        let authenticator = 'authenticator:jwt';
        this.get('session').authenticate(authenticator, creds).then(function() {
            console.log('LOGIN SUCCESS')
        }, function() {
            console.log('LOGIN FAIL')
        });
    }
}

在这种情况下发送的请求是:

{
    "password":"password123",
    "username":"user1"
}

关于此问题,有一些pull requests