0
使用Ruby 1.8.7和Rails 3.2.13,我有一個admin「section」,其中有一個BaseController
。我只想將幾乎所有頁面都限制爲登錄用戶。未登錄用戶可以看到的唯一頁面是登錄名,忘記密碼等等。目前我只保留一個「打開」的控制器和操作列表,但我認爲還有更好的方法。如何從登錄中排除某些操作?
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
基本上,如果用戶已經被認證或他們所訪問的控制器/動作是在@@non_authorized_paths
列表中,則不發生偏轉。
這是一個更好的方式 - 謝謝。 –