2010-12-14 162 views
0

现在,我正在使用RESTful认证框架来授权我的rails应用程序。这一切都很好(虽然从我的理解来看,有点过时了?),但现在我需要验证一个可能没有http会话的用户(例如从一个应用程序(而不是浏览器)打到我的导轨路线)。Rails身份验证和授权不保证浏览器会话?

具体来说,我现在必须支持一个iPhone应用程序,它命中我的一些宁静的路线来填充自己。但是,这个应用程序需要进行身份验证,只是传入用户名和密码作为参数似乎并不安全。它不仅不安全,而且不太干净(我不得不改变所有引用current_user(存储在会话中)的电话以手动设置当前用户,因为在没有浏览器的情况下点击我的应用程序似乎没有会话瓦尔斯(或我错了吗?))

任何意见? RESTful认证可以做到这一点吗?他们是否可以帮助我的替代框架(如Authlogic,或OAuth或其他)?

回答

1

Devise似乎能够做token-based authentication

为了安全起见,只允许SSL连接。将任何非SSL HTTP请求重定向到站点的SSL版本。您可以使用Rack中间件rack-ssl

+0

似乎这样可能适用于我,我会检查出来。谢谢! – Jenny 2010-12-14 19:51:05

+0

Hrrm ...我没有得到基于令牌的身份验证(它可能会像使用RESTful一样使用Cookie和会话变量......如果是这样......除了滚动我自己的解决方案之外,我无能为力),但是至今Devise还是不错的。 – Jenny 2011-01-07 17:35:45

+0

我只是不知道如何使用令牌,但一旦我找到它,它是完美的,对不起,我花了很长时间才接受。 – Jenny 2011-02-07 19:55:33

1

CanCan几乎是Rails应用程序的实际授权工具。在这种情况下,你不应该试图重新发明轮子。我相信它在AuthLogic和RESTful认证中都能很好地发挥作用。我对后者没有太多经验。

+0

呃,我有点困惑......我认为AuthLogic和RESTful Authentication都是授权工具......如果CanCan会成为竞争对手,他们将如何“和好”发挥作用? CanCan能否处理无需浏览器需要授权的情况? – Jenny 2010-12-14 19:42:24

+0

不要让这两个术语欺骗你,CanCan是专门为授权而设计的。这不是一个用户系统。它管理您资源的权限。什么样的应用程序需要与你的Rails应用程序接口?这将成为一项网络服务吗? – 2010-12-14 19:47:24

+0

一个iPhone应用程序,就像我在问题中所说的那样。我并不在乎实际的授权(我已经实现了我的作品),我只想让用户登录并保持登录状态,而不必担心http session vars – Jenny 2010-12-14 19:50:27