新手问题 rails android 用户 数据传递 问题

tank_lei · 2013年12月12日 · 最后由 sdpfoue 回复于 2014年05月11日 · 3941 次阅读

android 开发,利用 rails 作为后台 用户登录成功,记录了 session: session[:user_id] = @User.id

但是后面 android 根据用户查询数据的时候,在 rails 里面的
puts session[:user_id] 为 空

我把 application_controller.rb 里面的 #protect_from_forgery 注释了,暂时不需要防护

如果是直接浏览器访问,这是在一个 rails 工程里, puts session[:user_id] 是有值的

网上看了看都是说 session 的存储问题,但没有想到好的解决方法。 最土的就是每次从 android 请求都把 user_id 带着

有没有什么好的方案,在 android 应用访问 rails 服务端时,用户的 user_id 保存?

HTTP_AUTHORIZATION ???

Android 客户端需要将 token 传到服务器端才行

#2 楼 @chucai 那每次请求,都得带上 token 了?

服务器和 App 是怎么交互的? 就像楼上说的,一般会有一个 Token 来作为 identifier,而不是用 session

经常问的一个面试题:服务器是如何将 session 与访问者对应起来的

#5 楼 @hlcfan 哦,我也觉着如果直接传送 session 的话,太不安全了

#6 楼 @sdpfoue 额,通过 token 自动关联的?

#4 楼 @chucai 是不是如果传递过来 token,rails 可以自动获取到我存放的 session[:user_id] 了?

HTTP 是无状态的协议,Rails 默认的 Session 是通过 Cookie 来判断是否同一个用户,浏览器里面能存储 Cookie,Android 的话,对应的 HTTP 请求代码里面可能没有处理 Cookie。不知道我的猜测对不对。。。

客户端 API 开发,我觉得应该传递数据的时候带上客户端的 token/device_id, 服务器端多一个 user = User.find_by(token: params[:token]), 多个手动查询当前用户,也非常方便~

#9 楼 @tank_lei 可以参考这篇文章 以前写的 不知道是否能解决你的问题 http://blog.csdn.net/hexudong08/article/details/7744474

#8 楼 @tank_lei 默认是 cookie,每次发送请求时把 cookie 带上,cookie 在 HTTP 请求的 header 里,这个不需要 rails 做出额外的东西。建议补充一些 HTTP 协议的基础知识

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