首页 文章

ember-simple-auth-oauth2会话数据的示例

提问于
浏览
0

在我的Rails应用程序中,我正在尝试设置一个cookie,以便在页面加载后由Ember Simple Auth的cookie存储库获取 . 我正在使用Ember Simple Auth OAuth2授权程序 .

现在,我只是直接将OAuth数据植入cookie值:

{
  "token_type": "bearer",
  "access_token": "3ec78864cc017982fdeeb0c092bfbea3f104df1e18c9c67f222581d9353f3fce",
  "refresh_token": "cb03c07b8845ea7b40251b0df46839177bd7b51b3dd1d23f167890b9e1549f07",
  "created_at": 1436454055,
  "expires_in": 7060,
  "expires_at": 1436461254
}

我是Ember Simple Auth所期望的,因为 syncData 函数读取它一次,然后在下一个cookie轮询后用该值替换它:

{ secure: {} }

OAuth 2的数据应该是什么样的?无论它是如何存储的,我猜它都是一样的(cookie与本地存储与短暂存储相比) .

this post查看this screenshot之后,我认为我已经无法理解在Ember Simple Auth源中找到的地方来解决这个问题 .

2 回答

  • 0

    Ember Simple Auth仅使用cookie来存储其内部状态 . cookie不能从服务器设置,也不应在服务器端使用 . 该库仅用于为无状态(= cookie-less)API实现令牌认证 .

    有关OAuth 2.0如何与ESA协同工作的详细信息,请参阅自述文件:https://github.com/simplabs/ember-simple-auth/tree/master/packages/ember-simple-auth-oauth2#ember-simple-auth-oauth-20

  • 1

    我相信,如果可能的话,应该遵循马克在接受的答案中的建议 .

    但是,稍微多了一点,我发现cookie内容需要看起来像这样才能让Ember Simple Auth OAuth 2识别它:

    {
      "secure": {
        "authenticator": "simple-auth-authenticator:oauth2-password-grant",
        "token_type": "bearer",
        "access_token": "3ec78864cc017982fdeeb0c092bfbea3f104df1e18c9c67f222581d9353f3fce",
        "refresh_token": "cb03c07b8845ea7b40251b0df46839177bd7b51b3dd1d23f167890b9e1549f07",
        "created_at": 1436454055,
        "expires_in": 7060,
        "expires_at": 1436461254
      }
    }
    

    当然,这种方法存在一些缺点,即如果改变Ember Simple Auth存储数据的格式,则升级Ember Simple Auth可能会中断 .

    如果你从我试图做的其他应用程序设置cookie,你需要注意每次更新Ember Simple Auth后都要检查这种格式 . 实现此目的的最佳方法是创建一个安装并配置了Simple Auth的空白Ember应用程序,然后在登录应用程序后查看它存储的数据格式 .

相关问题