2012-07-02 5 views
0

사용자의 액세스 제어를 관리하고 웹 사이트 내의 각기 다른 역할을 허용하고 싶습니다. 각 사용자마다 다른 행이있을 수도 있습니다.asp.net의 액세스 제어

이 액세스 제어를 처리하는 가장 좋은 방법은 무엇입니까? 그러나, 나는이 제한이있다. 역할은 내가 사용하고있는 Oracle 데이터베이스에서 작성되었으며 역할을 관리하기 위해 APP_DATA에서 ASPNETDB를 사용하지 않을 것입니다.

나의 초기 아이디어는 사용자의 액세스를 알리고 관리자인지 사용자인지 또는 둘 다인지를 나타내는 세션을 만드는 것이 었습니다. 그러나, 나는 여전히 메뉴 항목을 숨기거나 표시하는 방법을 이해할 필요가 있었다. asp.NET 4.0은이 용도로 사용할 수있는 무언가를 준비했다고 믿기 때문에이 아이디어를 진행하지 않았습니다.

업데이트 : 내가 웹을 사용하고하는 것은

업데이트 # 2 양식 : I는 로그인 양식을 사용하고 있지 않다. 로그인 한 사람의 Windows 사용자 이름을 검색하고 데이터베이스의 해당 사용자 이름에 대한 액세스와 비교합니다. 인증 메커니즘은 수동이며, 역할을 구별하는 방법과 다른 메뉴를 표시하는 방법을 알아야합니다. 당신이 IPrincipal 및 IIdentity의 재정으로 시도 할 수

+0

WebForms 또는 MVC? –

+0

@Marnix Web Forms –

답변

0

,

And use these method 

IsInRole("TestRole") 
0

당신은 자신 만의 회원 및 역할 공급자를 구현할 수 있습니다. 실제로 그렇게 어렵지는 않습니다.

Google을 사용하여 "맞춤 멤버십 제공 업체 구현"을 검색하면 어떻게하는지 설명하는 기사가 많이 있습니다. 나는이 상당히 훌륭하다고 하나 :

How do I create a custom membership provider for ASP.NET MVC 2?

당신이 공급자를 구현하고 (웹 설정에서 권한 부여, CS 코드에서 IsInRole 등) 액세스 제어를위한 정기적 인 방법을 사용할 수 있습니다 Web.config의에서 그들을 등록한 후.

+0

MVC 2를 사용하고 있지 않습니다. 여전히 적용 가능합니까? –

+0

예. [이 답변보기] (http://stackoverflow.com/questions/9028897/difference-between-membership-provider-in-asp-net-webforms-and-mvc-3) – user1429080

0

유무를 오라클 공급자를 사용하는 줄 알았는데 Asp.net에서 Forms 인증이 어떻게 작동하는지 살펴 보겠습니다.이 기술은 사용중인 기술 (webforms 또는 mvc)과 사용자가 사용하는 데이터 소스 (SQL, XML 또는 기타)와는 독립적입니다. 예를 들어 데이터 소스에 대해 사용자가 인증되면 (예 : 사용자 이름에 사용자 이름 & 암호가 있음) IPrincipal User 객체에 원하는 역할을 할당하고 인증 된 것으로 플래그를 지정합니다. 이 값은 쿠키에 저장되어 인증 메커니즘이 앱 데이터 소스와 어떻게 독립적인지 보여줍니다. 더 많은 정보를 들어 : 세션 인증이 동기화되지 않기 때문에 http://www.eggheadcafe.com/tutorials/asp-net/009e2e5e-5a44-4050-8233-59a0d69844e8/basics-forms-authentication-in-aspnet-20.aspx

http://msdn.microsoft.com/en-us/library/aa480476.aspx

MembershipProvider in .NET for CAS Shibboleth

0

는 이런 종류의 정보를 저장하는 세션을 사용하지 마십시오. Asp.Net 멤버쉽 공급자에서 빌드를 사용하거나 인증 코드를 작성하기 위해 사용자 정의 코드를 작성할 수 있습니다. 다음은 인증 쿠키의 예입니다. UserModel은 추가 정보 (역할, 사용자 이름)를 포함하며 인증 티켓과 함께 안전한 암호화 된 형식으로 저장됩니다.

private void CreateAuthentificationTicet(UserModel user) 
{ 
    var serializedUser = JsonConvert.SerializeObject(user); 
    var ticket = new FormsAuthenticationTicket(1,    // version 
              user.Email, // user name 
              DateTime.Now, // create time 
              DateTime.Now.AddMinutes(30), // expire time 
              false,   // persistent 
              serializedUser);    // user data 

    var strEncryptedTicket = FormsAuthentication.Encrypt(ticket); 
    var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, strEncryptedTicket); 
    Response.Cookies.Add(cookie); 
}