Rails [已解决][Rails + devise] App 保存 Session 好,还是像 ruby china 为每个 user 生成 token_id 好?

qige023 · 2015年01月14日 · 最后由 huacnlee 回复于 2015年01月15日 · 7002 次阅读

看了 ruby-china 源码,app 访问时,生成一个 tokenid 供客户端 http 请求调用,验证这个 user

但是,为啥不能直接用回 devise 的机制,即登陆成功后的 cookie 保存在客户端,每次调用时自动把 cookie set 上去,这样就不需要生成额外的 tokenid

当然用回 devise 的机制会存在回话过时的问题,可以调整 devise session 过时机制,比如永不过时,也可以在客户端定义一个 servise,每隔一定时间去请求一次,保证 session 的合法性。

至于 token_id 同样可能要做类似的过时检测机制,这个貌似 ruby china 还没有 best practise

请教各位大大,用怎样的方案比较好

搞两个项目,两个都用一下就有体会了 😄

#2 楼 @hz_qiuyuanxin 就是选择困难症

哦对了,补充一点,我们的应用是有点类似 微博,知乎这样的社区型应用

#3 楼 @qige023 不熟悉,就先用 devise 呗

@hooopo   JWT 给我的感觉是一种一定程度上能替代 https 来进行安全通讯的方案,好像和我的问题关系不太大。 不过 mark 一下,以后可能碰到需要用到的应用场景

研究一下,JWT 对于移动端来说,是相对于 cookie 而言很不错的选择,唯一缺陷可能在于没有内置机制去使单个 token 失效(stackoverflow 上有不少好建议,可参考最下面的链接)

http://angular-tips.com/blog/2014/05/json-web-tokens-introduction/  https://auth0.com/blog/2014/01/07/angularjs-authentication-with-cookies-vs-token/

这个介绍怎样在 rails4 中整合 devise 和 jwt https://github.com/jimjeffers/rails-devise-cors-jwt-example/tree/master/app

关于 invalidate token JWT 的建议 http://stackoverflow.com/a/23089839/4412256

#6 楼 @qige023 那是你不理解 jwt

#1 楼 @qige023 用 devise 这种方式来验证 app 是不合适的, 推荐 JWT.

感谢大大们 @hooopo @lyfi2003 的回复,经过多方面考虑,已经选定使用 JWT

Ruby China 目前那个 access_token 没做好...

需要 登录 后方可回复, 如果你还没有账号请 注册新账号