Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在带有express api的Ember应用程序中使用JSON Web令牌实现登录页面_Express_Ember.js_Jwt_Passport.js_Passport Local - Fatal编程技术网

如何在带有express api的Ember应用程序中使用JSON Web令牌实现登录页面

如何在带有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

在测试我的秘密路由之后,我为我的expressapi添加了身份验证,一切似乎都正常工作。现在我的问题是如何在Ember应用程序登录页面中使用此功能。成功登录后收到秘密令牌后,浏览器如何知道您已登录。如何注销?ember应用程序如何知道谁已登录?在处理这个问题时,有没有什么特别需要注意的安全问题?

您应该使用插件来处理大部分繁重的工作

有安装说明,让您创建一个登录路径,该路径将使用用户名/密码并将其发送到服务器进行验证。在用户注销之前,令牌响应将在您的应用程序中可用

这个例子看起来像

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