首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >成员-简单-auth:使用自定义验证器在本地存储中持久化会话

成员-简单-auth:使用自定义验证器在本地存储中持久化会话
EN

Stack Overflow用户
提问于 2015-09-30 09:22:52
回答 1查看 817关注 0票数 0

设置:

  • 成员: 2.0.2
  • 成员数据: 2.0.1
  • jQuery : 1.11.3
  • 成员简单8月: 1.0.0 (jjAbrams分部)
  • 成员CLI : 1.13.8

我用伪君子来模仿服务器。

泌尿酶:

使用自定义身份验证器与服务器进行接口。

有两个路由:登录,受保护(默认的索引,应用程序)

当我使用正确的凭据登录时,会调用身份验证器的身份验证方法,并成功地记录传递给解析()的响应对象。

意见:

  1. 登录并被定向到受保护的页面后,刷新受保护的路由(有AuthenticatedRouteMixin)将返回登录页。
  2. 即使在成功登录之后,Localstorage也没有绑定到它的值。登录前:ember_simple_auth:session -> {"authenticated":{}}
  3. 身份验证器的restore()方法从未调用。
  4. 从受保护的路由转到另一条路由,然后返回回登录页面。

代码语言:javascript
运行
复制
//authenticators/custom.js
import Ember from 'ember';
import Base from 'ember-simple-auth/authenticators/base';


export default Base.extend({
  restore: function (data) {
    return new Ember.RSVP.Promise(function (resolve, reject) {
      console.log("RESOLVE",data);
      if (!Ember.isEmpty(data.token)) {
        //TODO Remove log

        resolve(data);
      } else {
        console.log("REJECTING",data);
        reject();
      }
    });
  },
  authenticate(credentials) {
    
    return new Ember.RSVP.Promise((resolve, reject) =>
      Ember.$.ajax({
        url: '/token',
        type: 'POST',
        data: JSON.stringify({
          email: credentials.identification,
          password: credentials.password
        }),
        contentType: 'application/json;charset=utf-8',
        dataType: 'json'
      }).then(function (response) {
        Ember.run(function () {
          //This logs the expected information
          console.log("Response", response, response.token, response.user);
          resolve(response);
        });
      }, function (xhr, status, error) {
        console.log("error", error, xhr.responseText);
        var response = xhr.responseText;
        Ember.run(function () {
          reject(response);
        });
      }));
  },

  invalidate(token) {
    return API.logout(token);
  }
});

代码语言:javascript
运行
复制
//environment.js
ENV['ember-simple-auth'] = {
  store: 'session-store:local-storage',
  routeAfterAuthentication: '/protected'
};

TLDR;如何使会话持久?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-01 18:54:39

我终于让一切都在一起了。EMB2.0和ESA 1.0

以下是我所采取的步骤:

  1. 创建一个新成员cli项目
  2. 在bower.json 来源中将Ember和ember数据值更新为^2.0.0
  3. 将ESA jjAbrams dep添加到package.json 来源
  4. 运行npm安装&保龄球安装

(这是导致问题中所描述的问题的最初问题)。

  1. 如果您正在从ESA的旧版本升级,则所有引用“simple-auth/.”应更新为“成员-简单-简单/.”相反..。。。这包括为身份验证者、授权者、存储库、混合器和config/environment.js . in文件中的Config密钥导入。

当ESA 1.0和Ember 2.0的Ember Cli发布后,所有这些都不应该成为一个问题:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32862447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档