ruby-on-rails – 带有身份验证的Rails Web服务???用户登录??

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 带有身份验证的Rails Web服务???用户登录??前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
任何想法我会怎么做有一个rails REST Web服务,用户只能获取,放置,发布,删除自己的数据?我使用Devise作为我的用户身份验证gem,但我不确定它是否以RESTful方式处理事情.

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

解决方法

Devise只会为您提供身份验证.这意味着您具有一定程度的确定性,即用户被识别并且他/她是谁/他是谁.根据这些信息,您可以使用Rails机制或其他Rails gem(即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_pa​​ge_path.

有关过滤器的更多信息,请参阅此Edge Guides article.

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

> 192 – Authorization with CanCan
> 188 – Declarative Authorization

原文链接:/ruby/269946.html

猜你在找的Ruby相关文章