gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 06:14:22 25 4
gpt4 key购买 nike

知道我将如何拥有一个 Rails REST Web 服务,用户只能在其中获取、放置、发布、删除他们自己的数据吗?我使用 Devise 作为我的用户身份验证 gem,但我不确定这是否以 RESTful 方式处理事情。

我如何确保用户已“登录”并且可以更改他们的数据?我是否必须在每个请求中传递某种 token ?

最佳答案

Devise 只会为您提供身份验证。这意味着您可以在一定程度上确定用户的身份以及他/她所说的他/她是谁。鉴于此信息,您可以使用 Rails 机制或其他 Rails gem(即 CanCan、Aegis、declarative_authorization)到 授权 用户并定义权限。

一个简单的方法是使用 before_filter在您有问题的 Controller 上,以确定是否,例如 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 gem 的更多信息(以及 更多 ),请在 Google 上四处看看并搜索 rails authorization .此外,这里有一些 Railscast 可以提供一些见解:
  • 192 - Authorization with CanCan
  • 188 - Declarative Authorization
  • 关于ruby-on-rails - 带身份验证的 Rails Web 服务???用户登录??,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4150629/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com