2008-10-07 5 views
3

우리는 ASP.NET에 멀티 테넌트 웹 사이트를 구축하고 있으며 각 고객이 자체 보안 모델을 구성하도록해야합니다. 사용자는 자신의 역할을 정의하고 해당 역할에 사용자를 배치 할 수 있어야합니다. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까?멀티 테넌트 ASP.NET 웹 사이트에서 사용자가 구성 할 수있는 보안

if (!user.InGroup("Admin") 
     Response.Redirect("/NoAccess.aspx"); 

그러나 하드 코드 코드의 그룹 및 사용 권한 :

처럼 코드가를 Page_Load 이벤트의 간단한 예제의 톤이있다. 어떻게 구성 할 수 있습니까?

답변

4

아마도 예를 들어, 다른 테이블의 역할과 세입자, 다음 PagePermissions를 저장하는 DB를 테이블에 구성 가능한 역할을 넣어 :

Table "Role" 
RoleId, TenantId, Role 

Table "PagePermissions" 
PageId, RoleId 

Table "UserRoles" 
UserId, RoleId 

그런 다음 페이지로드 검사에서 사용자인지 여부 예를 들어, 해당 페이지에 대한 권한이있는 역할 ID에 :

Select PageId FROM 
UserRoles UR INNER JOIN PagePermissions PP 
ON UR.RoleId = PP.RoleID 
WHERE UR.Userid = @UserId AND PP.PageID = @PageId 

행이 다음 사용자를 부정 반환이있는 경우.

+0

내 솔루션은 모든 고객이 자신의 응용 프로그램을 설치할 때만 사용할 수 있습니다. 아마 내가 오해 한 것입니다 ... – ullmark

+0

글쎄, 당신은 고객 ID를 구분하기 위해 쿼리에 응용 프로그램 ID를 추가 할 수 있습니다 ... – Nicholas

0

config-files에서 쉽게 관리 할 수있는 웹 사이트 구성 시스템을 만들 것입니다. 입력 된 멤버를 얻고 이와 같이 사용할 수있는 곳.

foreach(var group in ThisPageConfiguration.AcceptedRoleNames) 
if (user.IsInRole(group)) 
... 

각 고객은 자신의 설정 파일에 자신의 사이트를 구성 할 수 있습니다 ... 그리고 일의 모든 다른 유형은 구성 할 것입니다.

관련 문제