Rails Web服务与身份验证???用户登录??

时间:2010-11-11 01:13:54

标签: ruby-on-rails rest restful-authentication

我知道如何使用rails REST Web服务,用户只能获取,放置,发布,删除自己的数据?我使用Devise作为我的用户身份验证gem,但我不确定它是否以RESTful方式处理事情。

我如何确保用户“登录”并可以更改其数据?我是否必须在每个请求中传递某种令牌?

2 个答案:

答案 0 :(得分:3)

Devise只会为您提供身份验证。这意味着您具有一定程度的确定性,即用户被识别并且他/她是谁/他是谁。根据这些信息,您可以使用Rails机制或其他Rails gems(即CanCan,Aegis,declarative_authorization)来授权用户并定义权限。

一种简单的方法是在您的控制器上使用before_filter,以确定例如BlogPost是否属于已登录的用户。

这是我的意思的一个简单例子:

class BlogPostsController < ApplicationController
  before_filter :is_user_allowed, :only => [:edit, :delete, :show]

  # default Rails generated RESTful methods here    

  def is_user_allowed
    if BlogPost.find(params[:id]).try(:user_id) != current_user.id
      redirect_to access_denied_page_path
    end
  end
end

is_user_allowed方法检索正在查询的BlogPost,并确定是否允许current_user通过比较用户ID来执行操作。如果不平等是真的,那么它会重定向到我们臭名昭着的access_denied_page_path

有关过滤器的详细信息,请参阅此Edge Guides article

有关可为您提供此功能的Rails宝石的详细信息(以及更多),请浏览Google并搜索rails authorization。更重要的是,这里有一些应该提供一些见解的Railscast:

答案 1 :(得分:3)

查看AuthLogic's single_access_token。它专为验证REST API而设计。

相关问题