加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-17 01:19:52 所属栏目:百科 来源:网络整理
导读:任何想法我会怎么做有一个rails REST Web服务,用户只能获取,放置,发布,删除自己的数据?我使用Devise作为我的用户身份验证gem,但我不确定它是否以RESTful方式处理事情. 我如何确保用户“登录”并可以更改其数据?我是否必须在每个请求中传递某种令牌? 解决
任何想法我会怎么做有一个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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读