ember-simple-auth-oauth2 会话数据示例
Example of ember-simple-auth-oauth2 session data
在我的 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 screenshot from this post 之后,我想我可能离题太远了,我一直无法理解在 Ember 简单授权源中四处寻找以解决这个问题。
Ember Simple Auth 仅使用 cookie 来存储其内部状态。 cookie 不能从服务器设置,也不应该在服务器端使用。该库仅用于为无状态(= 无 cookie)API 实施令牌身份验证。
有关 OAuth 2.0 如何与 ESA 协同工作的更多信息,请参阅自述文件:https://github.com/simplabs/ember-simple-auth/tree/master/packages/ember-simple-auth-oauth2#ember-simple-auth-oauth-20
我认为,如果可能的话,应该遵循 Marco 在已接受答案中的建议。
但是,再仔细研究一下,我发现 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 更改了存储此数据的格式,它可能会中断。
如果您像我尝试做的那样从另一个应用程序设置 cookie,则需要注意在每次更新 Ember Simple Auth 后检查此格式。实现此目的的最佳方法是创建一个空白的 Ember 应用程序,并安装并配置了 Simple Auth,然后在您登录该应用程序后查看它存储的数据格式。
在我的 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 screenshot from this post 之后,我想我可能离题太远了,我一直无法理解在 Ember 简单授权源中四处寻找以解决这个问题。
Ember Simple Auth 仅使用 cookie 来存储其内部状态。 cookie 不能从服务器设置,也不应该在服务器端使用。该库仅用于为无状态(= 无 cookie)API 实施令牌身份验证。
有关 OAuth 2.0 如何与 ESA 协同工作的更多信息,请参阅自述文件:https://github.com/simplabs/ember-simple-auth/tree/master/packages/ember-simple-auth-oauth2#ember-simple-auth-oauth-20
我认为,如果可能的话,应该遵循 Marco 在已接受答案中的建议。
但是,再仔细研究一下,我发现 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 更改了存储此数据的格式,它可能会中断。
如果您像我尝试做的那样从另一个应用程序设置 cookie,则需要注意在每次更新 Ember Simple Auth 后检查此格式。实现此目的的最佳方法是创建一个空白的 Ember 应用程序,并安装并配置了 Simple Auth,然后在您登录该应用程序后查看它存储的数据格式。