【问题标题】:Rails user profile page only accessible to correct user只有正确的用户才能访问 Rails 用户个人资料页面
【发布时间】:2016-04-05 01:02:59
【问题描述】:

我正在使用设计进行身份验证。现在,我正在设置用户配置文件。我已经设置了所有内容,除了每个人都可以访问每个页面(因此您无需登录即可查看个人资料)。如何使只有正确的用户才能看到他们自己的个人资料页面?

users_controller.rb

class UsersController < ApplicationController
  def show
    @user = User.find(params[:id])
  end
end

routes.rb

devise_for :users

  resources :users, only: [:show]

  get 'users/show'

显示视图...

<div class="home-page-content">
  <%= @user.id %>
<h1>Users#show</h1>

<p>Find me in app/views/users/show.html.erb</p>
</div>

【问题讨论】:

标签: ruby-on-rails ruby devise


【解决方案1】:

这应该有助于检测 current_user 是否正确。

class UsersController < ApplicationController

    before_action :check_user

    private

    def check_user
      if current_user != @user
        redirect_to root_url, alert: "Sorry, This Profile belongs to someone else !"
      end
    end
end

【讨论】:

    【解决方案2】:

    在用户和个人资料之间创建 has_one belongs_to 关系。在您的控制器中,您可以包含一些仅显示当前用户个人资料的逻辑。

    Pundit 是一个很好的帮助授权的宝石 - https://github.com/elabs/pundit

    【讨论】:

      猜你喜欢
      • 2020-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-29
      • 1970-01-01
      • 2018-11-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多