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

A token request using ember-simple-auth-token won't include the identification field

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,
};

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