如何在使用 ember-simple-auth 进行身份验证后自动重定向
How to auto redirect after authenticate using ember-simple-auth
我正在使用 JWT(JSON 网络令牌)对用户进行身份验证。我确实在 application.js
路由中包含 ApplicationRouteMixin
并且它默认支持处理两个事件(成功登录和成功注销)。
现在,当我使用以下代码使用用户凭据登录时,
login(credential) {
const authenticator = 'authenticator:jwt';
const session = this.get('session');
session.authenticate(authenticator, credential)
.catch(() => {
const errorMessage = "Wrong email or password. Please try again!";
this.set('errorMessage', errorMessage);
});
},
即使响应成功并包含有效的 JWT(见下文),URL 也保持不变。
{"jwt":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE0ODg1NDIyMTcsInN1YiI6Mn0.Ma0ZtLWhoO1mb5cluGJZcKuHb-J2ZJdZOd3AFhVI258"}
当我手动刷新页面时,页面被重定向。
然而,当我在身份验证后处于受保护的路由时,自动重定向正在为 this.get('session').invalidate()
工作,这将我踢出了受保护的路由。
我知道一种解决方法是在 authenticate
方法(参见下面的代码)之后添加一个 then
,以便在成功响应时将 URL 重定向到正确的方法方法;然而,在浏览了这么多例子之后,我发现没有人做类似下面的事情。
session.authenticate(authenticator, credential)
.then(() => {
this.transitionTo('browse');
})
.catch(() => {
const errorMessage = "Wrong email or password. Please try again!";
this.set('errorMessage', errorMessage);
});
我在这里遗漏了什么?为什么我的路由在身份验证后不自动重定向?
这对我有用:
this.get('session').authenticate('authenticator:jwt', username, password).then(
() => this.transitionTo("index"),
(err) => this.controller.set('error', err.error || err)
);
我在网上找到了方法!!!希望大家喜欢它!我在这里找到:https://browntreelabs.com/redirection-in-ember-simple-auth/
我正在使用 JWT(JSON 网络令牌)对用户进行身份验证。我确实在 application.js
路由中包含 ApplicationRouteMixin
并且它默认支持处理两个事件(成功登录和成功注销)。
现在,当我使用以下代码使用用户凭据登录时,
login(credential) {
const authenticator = 'authenticator:jwt';
const session = this.get('session');
session.authenticate(authenticator, credential)
.catch(() => {
const errorMessage = "Wrong email or password. Please try again!";
this.set('errorMessage', errorMessage);
});
},
即使响应成功并包含有效的 JWT(见下文),URL 也保持不变。
{"jwt":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE0ODg1NDIyMTcsInN1YiI6Mn0.Ma0ZtLWhoO1mb5cluGJZcKuHb-J2ZJdZOd3AFhVI258"}
当我手动刷新页面时,页面被重定向。
然而,当我在身份验证后处于受保护的路由时,自动重定向正在为 this.get('session').invalidate()
工作,这将我踢出了受保护的路由。
我知道一种解决方法是在 authenticate
方法(参见下面的代码)之后添加一个 then
,以便在成功响应时将 URL 重定向到正确的方法方法;然而,在浏览了这么多例子之后,我发现没有人做类似下面的事情。
session.authenticate(authenticator, credential)
.then(() => {
this.transitionTo('browse');
})
.catch(() => {
const errorMessage = "Wrong email or password. Please try again!";
this.set('errorMessage', errorMessage);
});
我在这里遗漏了什么?为什么我的路由在身份验证后不自动重定向?
这对我有用:
this.get('session').authenticate('authenticator:jwt', username, password).then(
() => this.transitionTo("index"),
(err) => this.controller.set('error', err.error || err)
);
我在网上找到了方法!!!希望大家喜欢它!我在这里找到:https://browntreelabs.com/redirection-in-ember-simple-auth/