2012-07-23 4 views
1

ASP.NET MVC 4에서는 특정 [컨트롤러] 작업에 액세스하기 위해 인증을 쉽게 요구할 수있는 [AllowAnonymous] 특성과 [Authorize] 특성이 있음을 확인했습니다.ASP.NET MVC 4 멀티 테넌시

내가 필요한 것은 사실 멀티 임차 다. 각 사용자는 자신의 레코드에만 액세스 할 수 있으며 사용자 계정 이외의 모든 레코드는 개별 사용자가 소유해야합니다.

레일 플러그인입니다 호보 (http://hobocentral.net)에서

이 쉽게 내와 ApplicationController 코드의 다음 줄을 추가하여 수행되었다 :

before_filter :login_required, :except => [:login, :signup, :do_signup, :activate] 

그리고 내 모델 :

내 모델의 컨트롤러
belongs_to :owner, :class_name => "User", :creator => true 

# --- Permissions --- # 

def create_permitted? 
    acting_user == owner || !owner_changed? 
end 

def update_permitted? 
    acting_user == owner || !owner_changed? 
end 

def destroy_permitted? 
    acting_user == owner || !owner_changed? 
end 

def view_permitted?(field) 
    owner_is? acting_user or new_record? 
end 

그리고 마지막으로 :

def index 
    hobo_index current_user.modelName 
end 

이 somethi합니까 너무 단순하고 우아한 존재하거나 ASP.NET MVC에 내장되어 있습니까? 지금까지 ASP.NET MVC에서 멀티 테넌시를 구현하는 몇 가지 방법을 찾았지만 명확하게 올바른 방법은 무엇인지 확실하지 않습니다. 또한 .NET 4.5 및 Entity Framework 5를 사용하면 도움이됩니다.

답변

-2

당신이

HttpContext.Current.User.Identity.Name 

같은 것을 사용하고 수 asp.net MVC에서 인증에 다음의 이미 구축의 모든 유형을 사용하는 경우 당신은 당신에게 다음 내부 인증 메커니즘의 일종을 사용하지 않는 경우 인증시 사용자가 기본 키를 session 변수에 저장할 때 간단했던 작업을 수행 할 수 있습니다.

Session["User"] = Key; 

각 컨트롤러 내부

가 자동으로 정보가 있음을로드 한 것으로 변수

var key = Session["User"]; 

을 꺼내 키

+1

에 따라 사용자 데이터를 가져 오지 플러스 당신은 또한 간단한 ModelBinder를를 작성 생각할 수 마법의 문자열을 사용하지 않고 – Iridio

+0

감사. 한 줄의 코드 "HttpContext.Current.User.Identity.Name"은 실제로 멀티 테넌트 응용 프로그램을 만드는 방법을 알려주지 않습니다. 튜토리얼, 코드 샘플 등이 있습니까? – Jeremy

+0

나는이 답변이 진정한 멀티 테넌시 (multi-tenancy)를 수행하는 방법을 원격으로 시도하지 않는다는 점에서 Jeremy와 동의 할 것입니다. 그 고양이를 다듬는 많은 방법들이 있지만,이 대답은 그것들 중 하나가 아닙니다. –