使用 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。
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。