1

MVC 3 및 ​​mssql 2008 r2 및 데이터베이스 테이블의 다른 데이터에 다른 로그인을 연결하는 자동화 된 메커니즘이 있는지 궁금합니다.다른 로그인이 테이블의 다른 데이터에 액세스합니다.

예를 들어 캘린더를 만들고 싶습니다. 하지만 각 사용자가 자신의 항목 만 보길 원합니다. 그래서 저는 시간과 장소를 가진 테이블 예약을했습니다. 그러나 나는 LDAP의 연관성을 포함하고 싶지 않습니다. 왜냐하면 여러 곳에서 그렇게해야하기 때문입니다.

아담은

답변

0

응용 프로그램 로직에서이 작업을 수행 할 계획이없는 경우에, 나는 현재이 작업을 수행하는 생각할 수있는 유일한 방법은 저장 프로 시저 또는 테이블 반환 함수를 사용하는 것이다.

테이블에 대한 CRUD (읽기 업데이트 삭제 만들기) 저장 프로 시저라고도하는 것을 만듭니다. 분명히 테이블에서만 읽는다면 읽기 전용 sproc 만 필요합니다.

저장 프로 시저 내에서 사용자의 로그인을 기반으로 결과를 필터링하는 논리를 넣을 수 있습니다.

사용자를 데이터베이스의 역할에 할당하고 해당 역할에 저장 프로 시저에 대한 실행 권한을 부여 할 수 있습니다. 또는 테이블 값 함수를 사용하는 경우이 함수에 대한 SELECT 권한을 부여해야합니다. 사용자에게 테이블 자체를 볼 수있는 권한을 부여하지는 않습니다.

Ex.

CREATE ROLE CalendarReader AUTHORIZATION dbo; 
    GO 

    CREATE PROCEDURE Calendar_Get 
    AS 
     SET NOCOUNT ON; 
     SELECT 
      EventDate 
      ,EventText 
     FROM 
      Calendar 
     WHERE 
      UserLogin = suser_sname() 
     ; 
    GO 

    GRANT EXECUTE ON Calendar_Get TO CalendarReader; 
    GO 
0

데이터베이스가 각 사용자에게 속한 데이터를 알 수있는 방식으로 구성되어 있어야합니다. 따라서 CALENDAR 테이블에 user_id 열이 필요합니다. MVC를 비롯하여 ASP.NET 웹 기반 응용 프로그램 프레임 워크를 사용하는 경우 응용 프로그램에서 사용하는 인증 공급자에 액세스 할 수 있습니다.

MVC 응용 프로그램의 경우 컨트롤러는 where 절에서이 값을 사용해야하는 데이터 계층에 사용자 ID (예 : HttpContext.Current.User.Identity.Name)를 전달해야합니다.

이 작업을 암시 적으로 수행하면 문제가 발생할 수 있습니다. 예를 들어 관리자에게 여러 사용자의 캘린더에 대한 액세스 권한이 있어야하는 경우 암시 적 필터를 사용할 수 없습니다. 컨트롤러가 데이터 영역에 원하는 것을 알려 주어야합니다.

관련 문제