Ember.js ember simple auth:使用自定义验证器在本地存储中持久化会话

Ember.js ember simple auth:使用自定义验证器在本地存储中持久化会话,ember.js,ember-cli,ember-simple-auth,Ember.js,Ember Cli,Ember Simple Auth,设置: 余烬:2.0.2 余烬数据:2.0.1 jQuery:1.11.3 余烬简单授权:1.0.0(jjAbrams分支) 余烬CLI:1.13.8 我用伪装者来模拟服务器 用例: 使用自定义身份验证程序与服务器交互 有2个路由:登录、受保护(默认情况下还有索引、应用程序) 当我使用正确的凭据登录时,将调用验证器的authenticate方法并成功记录传递给resolve()的响应对象 意见: 登录并被定向到受保护页面后,刷新受保护路由(具有AuthenticatedRouteMixin)

设置:

  • 余烬:2.0.2
  • 余烬数据:2.0.1
  • jQuery:1.11.3
  • 余烬简单授权:1.0.0(jjAbrams分支)
  • 余烬CLI:1.13.8
我用伪装者来模拟服务器

用例:

使用自定义身份验证程序与服务器交互

有2个路由:登录、受保护(默认情况下还有索引、应用程序)

当我使用正确的凭据登录时,将调用验证器的authenticate方法并成功记录传递给resolve()的响应对象

意见:

  • 登录并被定向到受保护页面后,刷新受保护路由(具有
    AuthenticatedRouteMixin
    )将返回登录页面

  • 即使在成功登录后,Localstorage也没有绑定到它的值。
    登录前:
    ember\u simple\u auth:session->{“authenticated”:{}

  • restore()
    从未调用验证器的方法

  • 在验证后从受保护的路由转到另一个路由,然后返回,再次转到登录页面

  • //验证器/custom.js
    从“余烬”导入余烬;
    从“ember simple auth/authenticators/Base”导入Base;
    导出默认的Base.extend({
    恢复:功能(数据){
    返回新的Ember.RSVP.Promise(函数(解析、拒绝){
    console.log(“解析”,数据);
    如果(!Ember.isEmpty(data.token)){
    //TODO删除日志
    解析(数据);
    }否则{
    控制台日志(“拒绝”,数据);
    拒绝();
    }
    });
    },
    验证(凭据){
    返回新的余烬回复承诺((解决、拒绝)=>
    余烬$.ajax({
    url:“/token”,
    键入:“POST”,
    数据:JSON.stringify({
    电子邮件:凭证。身份证明,
    密码:credentials.password
    }),
    contentType:'application/json;charset=utf-8',
    数据类型:“json”
    }).然后(功能(响应){
    Ember.run(函数(){
    //这将记录预期的信息
    日志(“Response”,Response,Response.token,Response.user);
    决心(回应);
    });
    },函数(xhr,状态,错误){
    log(“error”,error,xhr.responseText);
    var response=xhr.responseText;
    Ember.run(函数(){
    拒绝(回应);
    });
    }));
    },
    使无效(令牌){
    返回API.logout(令牌);
    }
    
    });我终于把这一切都安排好了。Ember 2.0和ESA 1.0

    以下是我采取的步骤:

  • 创建新的ember cli项目
  • 在bower.json中将余烬和余烬数据值更新为^2.0.0
  • 将ESA jjAbrams dep添加到package.json
  • 运行npm安装和bower安装
  • Gotchas:(这是问题中所述问题的根源)

  • 如果您是从旧版本的ESA升级,则所有对“simple auth/”的引用都应更新为引用“ember simple auth/”。。 .. 这包括身份验证程序、授权程序、存储、混合和Config/environment.js文件中的配置键的导入

  • 一旦ESA 1.0和Ember 2.0版的Ember Cli面世,所有这些都不应该成为问题:)

    您实际使用的是jj abrams
    分支机构最近提交的吗?大概。。我从bower.json和package.json中清除了旧的ESA dep,添加了jjAbrams dep,并按指定运行了npm和bower安装..登录后和重新加载前本地存储的内容是什么?ember_simple_auth:session->{“secure”:{}(重新加载前)。我从头开始了一个新项目,一次从旧文件中提取每个文件。现在似乎工作正常(除了session.invalidate()抛出一些未知错误,但这是另一个问题)。。。