受控访问和路由

时间:2010-07-09 08:06:47

标签: ruby-on-rails routing

我有一个rails应用程序,我想以受控方式管理对应用程序的访问。 客户端用户只能访问应用程序中的某些视图,而管理员可以访问任何页面。 将来,我还可能会添加一些可能访问管理员访问的页面子集的半管理员。 我已经有了登录身份验证,但我想要一个更好的解决方案来控制用户访问我的应用程序中的某些页面。

2 个答案:

答案 0 :(得分:2)

使用before_filter

users_controller.rb

  class UsersController < ApplicationController
    before_filter :login_required, :except=>[:show]
    before_filter :required_admin, :only=>[:all_users]

    def show

    end

    def all_users

    end

    def edit

    end

  end

application_controller.rb

  class ApplicationController < ActionController::Base

    def current_user
       session[:user]
    end

    def login_required
      if current_user
        return true
      else
        flash[:notice]='Please login to continue.'
        redirect_to :controller => "logins"
      end
    end

    def required_admin
      if current_user && current_user.is_admin?  #check here if current user is admin or not
        return true
      else
        flash[:notice]='Please login as admin.'
        redirect_to :controller => "logins"
      end
    end
  end
  1. 显示方法可以看到任何人与&amp;没有登录

  2. 只有管理员才能看到all_users方法

  3. 编辑方法可以看到任何登录用户(即用户管理员)

答案 1 :(得分:2)

您似乎已经了解了身份验证的基础知识,但只需要基于角色的授权解决方案。您可能需要查看CanCan,它适用于大多数身份验证包。如何使用它有一个很好的railscast

希望这有帮助。