Ruby on Rails: before_filter =>: only_when_user_is_logged_in

Затмение PDT с ПЕХЛЕВИ имеет версию Mac ( PDT, единое ).

я использовал его в течение приблизительно 3 месяцев, и это довольно твердо и имеет возможности отладки с xdebug ( практическое руководство отладки ) и отладчик зенда.

9
задан Simone Carletti 13 December 2009 в 15:37
поделиться

5 ответов

I think you're asking how to run a before filter only if a user is logged in. There is no built-in semantic for this, but it's easy enough to inline:

class SomeController < ApplicationController
  before_filter :do_something

  def do_something
    if logged_in?
      # the stuff you want to do
    end
  end
end
16
ответ дан 4 December 2019 в 06:05
поделиться

Если вы действительно не хотите, чтобы before_filter выполнялся для кого-либо, кроме вошедших в систему пользователей, рассмотрите возможность использования #skip_before_filter в вашем фильтре аутентификации. Например, если вы проверяете, вошли ли пользователи в ваш фильтр аутентификации, если аутентификация не удалась, просто вызовите skip_before_filter: filter_for_logged_in_users_only .

Кроме того, вы можете просто проверить, вошел ли пользователь в систему перед выполнением фильтра только по членам. Например:

def filter_for_logged_in_users_only
  return true unless current_user && logged_in?
  #rest of the logic
end
2
ответ дан 4 December 2019 в 06:05
поделиться

Перед фильтрами принимает необязательный блок, который передается текущему экземпляру контроллера так что вы можете сделать что-то вроде этого:

before_filter :do_stuff, lambda { |controller| controller.logged_in? }
11
ответ дан 4 December 2019 в 06:05
поделиться
before_filter :only_when_user_is_logged_in, :only => :the_action

Или для нескольких

before_filter :only_when_user_is_logged_in, :only => [:the_action, :another_action]

С другой стороны, вы также можете указать параметр : except =>: this_action

18
ответ дан 4 December 2019 в 06:05
поделиться

Если вы используете спокойную аутентификацию, это просто before_filter: login_required . Если вы используете свою собственную структуру аутентификации, вы можете создать метод в application.rb, который возвращает true, если пользователь вошел в систему, или перенаправляет на страницу входа в противном случае.

1
ответ дан 4 December 2019 в 06:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: