2010-07-09 8 views
0

난 레일 응용 프로그램이 있고 제어 된 방식으로 응용 프로그램에 대한 액세스를 관리하려고합니다. 클라이언트 사용자는 응용 프로그램의 특정보기에만 액세스 할 수 있지만 관리자는 모든 페이지에 액세스 할 수 있습니다. 앞으로 관리자가 액세스 한 일부 페이지에 대한 액세스 권한이있는 일부 준 관리자를 추가 할 수도 있습니다. 이미 로그인 인증이 있지만 응용 프로그램의 특정 페이지에 대한 사용자 액세스를 제어하기위한 더 나은 솔루션이 필요합니다.액세스 및 라우팅 제어

+1

그래서 무엇을 묻고 있습니까? –

+0

@Mark - before_login을 사용하고 기본 로그인 인증을 사용하는 방법을 알고 있습니다. 내가 원하는 것은 다음과 같습니다. 구매자, 고객 및 공급 업체 모델이 있다고 가정 해 보겠습니다. 내 관리자는 스캐 폴드로 만든보기를 통해 모든 모델을 볼 수 있습니다. 준 관리자는 고객 모델에만 액세스 할 수 있습니다. 내 고객 사용자는 자신의 사용자 모델과 내가 보여준 데이터 만 볼 수 있습니다. –

답변

2

를 볼 수 있습니다 인증 솔루션. CanCan을 살펴볼 수도 있지만 대부분의 인증 패키지에서 잘 작동합니다. 그것을 사용하는 방법에 대해 좋은 railscast가 있습니다.

희망이 도움이됩니다.

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. 표시 방법

  2. 단지 관리 단지 역할 기반이 필요

  3. 편집 방법은 모든 로그인 사용자를 볼 수 있습니다 ALL_USERS 방법 (즉, 사용자 관리) 당신이 아래로 인증의 기초를 가지고 있지만 나타납니다

+0

이것은 이미 완료되었습니다. 내가 원하는 것은 내가 구매자, 고객 및 벤더 모델을 가지고 있다고 말하는 것입니다. 내 관리자는 스캐 폴드로 만든보기를 통해 모든 모델을 볼 수 있습니다. 준 관리자는 고객 모델에만 액세스 할 수 있습니다. 내 고객 사용자는 자신의 사용자 모델과 내가 보여준 데이터 만 볼 수 있습니다. –

+0

보기가 모델과 일대일이 아니기 때문에 이것은 앱을 어떻게 표현하는지에 달려 있습니다. 원한다면'show' 뷰를 가질 수 있습니다.'show' 뷰는 뷰어를 보는 사람에 따라'show_admin' 또는'show_user'로 리다이렉트하는 조건부 브랜치가 있습니다. – Karl