0
Ruby 1.8.7 및 Rails 3.2.13을 사용하면 BaseController
관리자 "섹션"이 있습니다. 거의 모든 페이지를 로그인 한 사용자로만 제한하려고합니다. 로그인하지 않은 사용자가 볼 수있는 유일한 페이지는 로그인, 암호 분실 등입니다. 현재 컨트롤러와 동작 목록을 "열린"상태로 유지하고 있지만 더 나은 방법이 있다고 생각합니다. 사용자가 이미 인증하거나 액세스하는 제어기/액션 @@non_authorized_paths
목록 인 경우로그인에서 특정 작업을 제외하는 방법은 무엇입니까?
class Admin::BaseController < ApplicationController
@@non_authorized_paths = [
{ :controller => "admin/account" , :actions => [ "login", "login_post", "logout", "forgot_password", "forgot_password_post", "reset_password", "reset_password_post" ]}
]
layout "admin/layouts/admin"
before_filter :authorized?
def authorized?
if (session[:user] != nil || @@non_authorized_paths.any? {|o| o[:controller] == params[:controller] && o[:actions].any? { |a| a == params[:action] } })
return
end
flash[:warning] = "You should login before doing that."
redirect_to :controller => "admin/account", :action => "login"
end
end
기본적 리디렉션 일절 발생하지 않는다.
감사합니다. 감사합니다. 감사합니다. –