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