我正在尝试修改Meteor应用(Telescope)以使用非基于oauth的身份验证。
更具体地说,我想使用我的大型Web框架设置的cookie作为基于用户名/令牌的身份验证机制。具体来说,我希望客户端将用户名和令牌从其cookie传递到服务器。然后,服务器将用户名和令牌传递给我的身份验证服务器,验证服务器将验证令牌是否是新的并且与用户名匹配。
我对如何使用Accounts框架感到困惑。我认为可以扩展Accounts.validateLoginAttempt来执行检查,但没有真正的方法将cookie信息传递给该方法,是吗?
或者,我可以创建一个新的accounts-xxxx包,但是所有其他帐户包似乎都使用了oauth - 创建一个非oauth包会比我咀嚼更多吗?
或者我有一个更简单的解决方案吗?
答案 0 :(得分:2)
您可以考虑的一些简单的事情(通过技术)是loginToken
。您会注意到在Meteor用户集合中,services
属性下面有一个名为resume
的列表。
这包含用户可以在不询问登录详细信息的情况下登录的预先验证的令牌(通常用于已经登录该设备的人,类似于cookie)。
唯一的区别是它使用localStorage而不是cookie,看起来有点像这样:
Meteor.loginToken => 4Cs_abcdEfghijklmn42cf4444445577889900120
Meteor.loginTokenExpires => Wed Oct 08 2014 23:22:46 GMT
Meteor.userId => abcDEBG4Abc45A5vg
如果您能够从用户的简历中获取(或创建)简历项目,您可以使用此登录,也许使用其他一些逻辑(例如包含令牌的链接 - 如来自电子邮件)设置localStorage您的望远镜应用中的上述项目。
使用您已验证的令牌将其设置为localStorage.setItem('Meteor.loginToken', '4cs_abcde....')
。
请记住,当您将其发送到您的望远镜应用程序时,您应该使用某种可过期的令牌或其他东西(可能在您提及的cookie中)验证用户,因为这样可以让人们轻松登录。