2

我网站上的每个页面都需要用户身份验证(用户必须登录才能访问它)。我在设计文档中找到了这个,但它似乎对我不起作用......

https://github.com/plataformatec/devise/wiki/How-To:-Require-authentication-for-all-pages

我已经复制粘贴了这个:

 authenticated :user do
   root :to => 'home#index'
 end
 root :to => redirect('/users/sign_in')

我怎样才能实现这个非常自然的功能?

4

1 回答 1

1

这是我所做的:

app/controllers/application_controller.rb中,添加如下一行:

class ApplicationController < ActionController::Base
    # Prevent CSRF attacks by raising an exception.
    # For APIs, you may want to use :null_session instead.
    protect_from_forgery with: :exception

    before_action :authenticate_user!

    # ...
end

这将强制authenticate_user!在任何操作之前运行。

如果您有一些不需要身份验证的操作/控制器,您可以将以下行添加到它们的控制器文件中:

class StaticPagesController < ApplicationController
    prepend_before_filter :require_no_authentication

    # ...
end

require_no_authentication函数还接受一个可选参数,一个名为 的数组only,其中包含不需要身份验证的操作列表。

nb 我知道这是高级死灵术,但这个问题没有答案,我花了很多时间寻找正确的答案。

于 2015-02-07T21:43:26.747 回答