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
Ember.js js使用Ember Simple Auth从代码中验证用户_Ember.js - Fatal编程技术网

Ember.js js使用Ember Simple Auth从代码中验证用户

Ember.js js使用Ember Simple Auth从代码中验证用户,ember.js,Ember.js,我正在尝试使用代码对用户进行身份验证。我有一个用户可以登录的登录表单,它的工作方式很有魅力 但是,当新用户注册并保存表单时,我希望在表单有效时在后台登录他们 我该怎么做 我在authenticate方法的API中发现了以下内容: 对于在没有身份验证路由的情况下工作的应用程序,例如。 因为它会打开一个新窗口来处理那里的身份验证,所以 覆盖的方法,例如: 有人知道如何实现这一点吗。当我调用这个时。获取“会话”。验证将标识和密码数据放在何处 任何提示或建议都将不胜感激 编辑:也许可以使用用于登录的同一

我正在尝试使用代码对用户进行身份验证。我有一个用户可以登录的登录表单,它的工作方式很有魅力

但是,当新用户注册并保存表单时,我希望在表单有效时在后台登录他们

我该怎么做

我在authenticate方法的API中发现了以下内容:

对于在没有身份验证路由的情况下工作的应用程序,例如。 因为它会打开一个新窗口来处理那里的身份验证,所以 覆盖的方法,例如:

有人知道如何实现这一点吗。当我调用这个时。获取“会话”。验证将标识和密码数据放在何处

任何提示或建议都将不胜感激


编辑:也许可以使用用于登录的同一验证器,而不是示例中的app:authenticators:custom?

要通过常规登录(可能使用EmberSimpleAuth的默认验证器)或在成功注册后自动对会话进行身份验证,您应该为每种情况使用不同的验证器。对于登录,您将使用带有LoginControllerixin等的默认验证器;对于自动情况,您将使用自定义验证器。有关使用自定义验证器的文档,请参阅EmberSimpleAuth的github repo和API文档中的示例:

基本上你要做的是:

App.AutoAuthenticator = Ember.SimpleAuth.Authenticators.OAuth2.extend({
  authenticate: function(credentials) {
    if (!Ember.isEmpty(credentials.access_token)) {
      return Ember.RSVP.resolve(credentials);
    } else {
      return this._super(credentials);
    }
  }
});
Ember.Application.initializer({
  name: 'authentication',
  initialize: function(container, application) {
    container.register('app:authenticators:custom', App.AutoAuthenticator);
    Ember.SimpleAuth.setup(container, application);
  }
});
this.get('session').authenticate('app:auto-authenticator', { access_token: 'secret token!' })

我并没有实际测试它——请将其视为伪代码

要通过常规登录(可能使用EmberSimpleAuth的默认身份验证器)或在成功注册后自动对会话进行身份验证,您需要为每种情况使用不同的身份验证器。对于登录,您将使用带有LoginControllerixin等的默认验证器;对于自动情况,您将使用自定义验证器。有关使用自定义验证器的文档,请参阅EmberSimpleAuth的github repo和API文档中的示例:

基本上你要做的是:

App.AutoAuthenticator = Ember.SimpleAuth.Authenticators.OAuth2.extend({
  authenticate: function(credentials) {
    if (!Ember.isEmpty(credentials.access_token)) {
      return Ember.RSVP.resolve(credentials);
    } else {
      return this._super(credentials);
    }
  }
});
Ember.Application.initializer({
  name: 'authentication',
  initialize: function(container, application) {
    container.register('app:authenticators:custom', App.AutoAuthenticator);
    Ember.SimpleAuth.setup(container, application);
  }
});
this.get('session').authenticate('app:auto-authenticator', { access_token: 'secret token!' })

我并没有实际测试它——请将其视为伪代码

谢谢你的评论!这很容易理解。还有一个问题,您还知道我将App.AutoAuthenticator方法放在Ember应用程序工具包中的何处吗?我需要把代码放在哪个文件夹中?嗯,不确定余烬应用套件定义了哪些文件夹-我想说一个好地方应该是lib之类的。再次感谢您的评论!但是,您可以测试此代码并将其编辑为工作版本吗?社区将非常高兴!赏金来了-也许其他人可以为你做这件事-我正忙于1.0版的余烬。简单…哈哈,好吧,我们应该用这个答案来做。你需要知道我们对SimpleAuth很兴奋!赏金!谢谢你的评论!这很容易理解。还有一个问题,您还知道我将App.AutoAuthenticator方法放在Ember应用程序工具包中的何处吗?我需要把代码放在哪个文件夹中?嗯,不确定余烬应用套件定义了哪些文件夹-我想说一个好地方应该是lib之类的。再次感谢您的评论!但是,您可以测试此代码并将其编辑为工作版本吗?社区将非常高兴!赏金来了-也许其他人可以为你做这件事-我正忙于1.0版的余烬。简单…哈哈,好吧,我们应该用这个答案来做。你需要知道我们对SimpleAuth很兴奋!赏金!