2
如果當前登錄的用戶是管理員或非管理員,我一直在關注瑞安貝茨的電視廣播以獲取管理員身份驗證系統以顯示某些選項。管理員身份驗證
def admin?方法的作品,但只有在代碼中將其設置爲true或false時纔有效。 True顯示所有選項並將其隱藏。
我曾嘗試過: current_user[:username] == 'dave'
它的工作原理,直到用戶更改爲其他人,然後它給出了一個沒有方法錯誤。
和session[:username] == 'dave'
不給出錯誤,但設置管理員?方法在所有用戶包括'dave'上爲false。
我應該將什麼放入管理員中?方法?理想情況下,我希望能夠查看用戶名和passsword是否匹配,然後返回true。
任何幫助將不勝感激!
應用控制器
class ApplicationController < ActionController::Base
helper :all # include all helpers, all the time
protect_from_forgery # See ActionController::RequestForgeryProtection for details
helper_method :admin?
protected
def authorize
unless admin?
flash[:error] = "not authorized!"
redirect_to venues_path
false
end
end
def admin?
true
#false
end
end
路由
Go::Application.routes.draw do
get "log_in" => "sessions#new", :as => "log_in"
get "log_out" => "sessions#destroy", :as => "log_out"
get "sign_up" => "users#new", :as => "sign_up"
root :to => "users#new"
resources :sessions
resources :users
end
會話控制器
類SessionsController < ApplicationController的
def create
user = User.authenticate(params[:username], params[:password])
if user
session[:user_id] = user.id
redirect_to venues_path, :notice => "Logged in!"
else
flash.now.alert = "Invalid username or password"
render "new"
end
end
def destroy
session[:user_id] = nil
redirect_to venues_path, :notice => "Logged out!"
end
end
看起來就像我想要的,謝謝! – Dave 2011-05-30 08:11:43
享受! CanCan 1.0非常棒,我不確定CanCan 2.0什麼時候出來,但應該很快。可以讓一切變得更加簡單。 – ardavis 2011-05-30 16:41:51