如何在带有express api的Ember应用程序中使用JSON Web令牌实现登录页面
在测试我的秘密路由之后,我为我的expressapi添加了身份验证,一切似乎都正常工作。现在我的问题是如何在Ember应用程序登录页面中使用此功能。成功登录后收到秘密令牌后,浏览器如何知道您已登录。如何注销?ember应用程序如何知道谁已登录?在处理这个问题时,有没有什么特别需要注意的安全问题?您应该使用插件来处理大部分繁重的工作 有安装说明,让您创建一个登录路径,该路径将使用用户名/密码并将其发送到服务器进行验证。在用户注销之前,令牌响应将在您的应用程序中可用 这个例子看起来像如何在带有express api的Ember应用程序中使用JSON Web令牌实现登录页面,express,ember.js,jwt,passport.js,passport-local,Express,Ember.js,Jwt,Passport.js,Passport Local,在测试我的秘密路由之后,我为我的expressapi添加了身份验证,一切似乎都正常工作。现在我的问题是如何在Ember应用程序登录页面中使用此功能。成功登录后收到秘密令牌后,浏览器如何知道您已登录。如何注销?ember应用程序如何知道谁已登录?在处理这个问题时,有没有什么特别需要注意的安全问题?您应该使用插件来处理大部分繁重的工作 有安装说明,让您创建一个登录路径,该路径将使用用户名/密码并将其发送到服务器进行验证。在用户注销之前,令牌响应将在您的应用程序中可用 这个例子看起来像 import
import Controller from '@ember/controller';
import { inject } from '@ember/service';
export default Controller.extend({
session: inject('session'),
actions: {
authenticate: function() {
const credentials = this.getProperties('username', 'password');
const authenticator = 'authenticator:token'; // or 'authenticator:jwt'
this.get('session').authenticate(authenticator, credentials);
}
}
});
您还可以创建注销路由,该路由处理从应用程序注销以及向服务器发送任何注销请求
如果可能,您应该将服务器与默认值对齐,但您几乎可以配置所有内容
我们非常满意这个插件已经投入生产3年了,我强烈推荐它。您需要检查是否存在令牌(可能存储在localstorage或其他地方),然后还要检查令牌是否过期,以及令牌的用户id是否与当前用户id匹配,如果所有这些都已签出,您的应用程序可以假定用户已“登录”并进行检查
ENV['ember-simple-auth-token'] = {
tokenDataPropertyName: 'tokenData'; // Key in session to store token data
refreshAccessTokens: true, // Enables access token refreshing
tokenExpirationInvalidateSession: true, // Enables session invalidation on token expiration
serverTokenRefreshEndpoint: '/api/token-refresh/', // Server endpoint to send refresh request
refreshTokenPropertyName: 'refresh_token', // Key in server response that contains the refresh token
tokenExpireName: 'exp', // Field containing token expiration
refreshLeeway: 0 // Amount of time to send refresh request before token expiration
};