Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.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 - Fatal编程技术网

Ruby on rails Rails控制器:仅对某些操作进行身份验证

Ruby on rails Rails控制器:仅对某些操作进行身份验证,ruby-on-rails,Ruby On Rails,我有一个有用户的rails站点,这些用户可以创建某些页面 我正试图让那些页面对未登录的人可见。因此,我正在为页面执行另一个视图和控制器操作 目前,我唯一的问题是制作一个控制器,其中一个操作需要身份验证,而另一个操作不需要身份验证,同时保持在同一个控制器上 我拥有的 class PageController < ApplicationController before_action :authenticate_user! skip_before_filter :verify_

我有一个有用户的rails站点,这些用户可以创建某些页面

我正试图让那些页面对未登录的人可见。因此,我正在为页面执行另一个视图和控制器操作

目前,我唯一的问题是制作一个控制器,其中一个操作需要身份验证,而另一个操作不需要身份验证,同时保持在同一个控制器上

我拥有的

class PageController < ApplicationController
    before_action :authenticate_user!
    skip_before_filter :verify_authenticity_token
    respond_to :json


    def show 
        @page = Page.new
        ....
    end
    ....
 end
注意

class PageController < ApplicationController
    before_action :authenticate_user!
    skip_before_filter :verify_authenticity_token
    respond_to :json


    def show 
        @page = Page.new
        ....
    end
    ....
 end

其他人为这个站点编写了大部分代码(后来离开了),我是rails新手。因此,如果我打算用完全错误的方法解决这个问题,请告诉我。

您可以这样做:

before_action :authenticate_user!, only: [:show]
skip_before_action :require_login, only: [:show]
因此,这将仅在
show
操作上运行。有时,您需要在所有设备上运行,并留下一个设备,以便:

before_action :authenticate_user!, except: [:show]
因此,它不会在
show
上运行,而是在所有其他操作上运行。假设您的
在\u操作之前
在应用程序控制器中,您需要在继承的控制器中跳过,您可以这样做:

before_action :authenticate_user!, only: [:show]
skip_before_action :require_login, only: [:show]

您可以这样做:

before_action :authenticate_user!, only: [:show]
skip_before_action :require_login, only: [:show]
因此,这将仅在
show
操作上运行。有时,您需要在所有设备上运行,并留下一个设备,以便:

before_action :authenticate_user!, except: [:show]
因此,它不会在
show
上运行,而是在所有其他操作上运行。假设您的
在\u操作之前
在应用程序控制器中,您需要在继承的控制器中跳过,您可以这样做:

before_action :authenticate_user!, only: [:show]
skip_before_action :require_login, only: [:show]

谢谢,有没有办法对除show_public之外的所有内容进行身份验证?谢谢,有没有办法对show_public之外的所有内容进行身份验证?