Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails用户配置文件页只能由正确的用户访问_Ruby On Rails_Ruby_Devise - Fatal编程技术网

Ruby on rails Rails用户配置文件页只能由正确的用户访问

Ruby on rails Rails用户配置文件页只能由正确的用户访问,ruby-on-rails,ruby,devise,Ruby On Rails,Ruby,Devise,我正在使用Desive进行身份验证。现在,我正在设置用户配置文件。我已经设置好了一切,除了每个人都可以访问每个页面(这样你就可以在不登录的情况下查看个人资料)。我如何做到只有正确的用户才能看到他们自己的个人资料页面 用户\u控制器.rb class UsersController < ApplicationController def show @user = User.find(params[:id]) end end devise_for :users reso

我正在使用Desive进行身份验证。现在,我正在设置用户配置文件。我已经设置好了一切,除了每个人都可以访问每个页面(这样你就可以在不登录的情况下查看个人资料)。我如何做到只有正确的用户才能看到他们自己的个人资料页面

用户\u控制器.rb

class UsersController < ApplicationController
  def show
    @user = User.find(params[:id])
  end
end
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>

用户展示
在app/views/users/show.html.erb中查找我


这一项应该有助于检测当前用户是否正确

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
class UsersController
创建一个属于用户和配置文件之间的关系。在控制器中,可以包含一些仅显示当前用户配置文件的逻辑

Pundit是一个很好的宝石,有助于授权-

您可能会发现宝石很快就会派上用场。答案是针对你的特定问题的最佳方式。