2012-02-16 3 views
0

웹 응용 프로그램에 ASP.net 폼 인증을 사용하고 있습니다. 관리 작업을위한 "admin"폴더가 있으며, 그/그녀가 오작동하는 경우에도 한 명의 사용자를 잠글 수 있습니다.ASP.Net 인증 : 사용자가 페이지에 액세스 할 때 인증/권한 부여에 실패하면 복수 응답을 가질 수 있습니까?

현재 일반 사용자가 관리자 페이지에 액세스하려고하면 이미 로그온했지만 로그온 페이지로 리디렉션됩니다.

질문 : 사용자가 페이지에 액세스하지 못할 때 "이 페이지에 액세스하려면 관리자 권한이 필요합니다"/ "계정이 있습니다."와 같은 다른 페이지를 표시 할 수 있도록 웹 앱을 구성하는 방법은 무엇입니까? 잠긴 "/ (정상 로그온 페이지)?

ValidateUser()는 bool 만 반환 할 수 있습니다. :(

덕분에 많은

답변

1

당신의 역할을 구현하고 그들에게 사람을 추가해야합니다. 당신이 적절한 역할 명을 지정하면, 당신은 사람이 접근 할 적절한 역할에 있는지 확인 할 . 그렇지 않으면 페이지, 리디렉션 또는 올바른 오류 메시지가 표시 당신은 뒤에 코드를 사용하여이 작업을 수행 할 수있을 것입니다 당신이 이미하려고하는 것 같다 같은 :.

if(!Roles.IsUserInRole("Administrator")) Response.Redirect("~/"); 

을 또는 당신의 Web.config를 사용할 수 있습니다

<configuration> 
    <location path="memberPages"> 
     <system.web> 
      <authorization> 
       <allow roles="Administrator" /> 
       <deny users="*" /> 
      </authorization> 
      </system.web> 
     </location> 
<configuration> 

더 많은 정보를 원하시면 아래 링크를 참조하십시오 :

+0

나는 본다. 따라서이 경우 returnUrl을 검사하여 사용자가 어떤 디렉토리에 액세스하려고하는지 확인한 다음 해당 역할을 확인해야합니다. 나는이 방법으로 검사하는 것을 아주 좋아하지 않지만 지금까지 어떤 대안도 찾지 못했습니다. –

+0

킨다, 예. 로깅을 기본 페이지, 마스터 페이지 또는 HttpModule에 배치하여 더 멋지게 만들 수 있습니다. HttpModule 라우트를 사용한다면'UrlAuthorizationModule.CheckUrlAccessForPrincipal' 메소드와'HttpApplication'의'AuthenticateRequest' 또는'AuthorizeRequest' 이벤트를 살펴볼 수 있습니다. – Jeff

-1

내가 역할을 diffenrent 서로 다른 URL을 제공하는 이런 종류의 문제를 해결했다.

asp.net가 자동으로 login.aspx 페이지에 모두 리디렉션됩니다하지만 당신은에서 얻을 수있는 당신이 www.yoursite.com/private주고 사용자에게 www.yoursite.com/admin 을 줄 관리자에게 그것이 어떤 종류의 사용자인지를 나타내는 url 매개 변수.

//I detect where the request originated from 
    string str = Request.QueryString["ReturnUrl"] == null ? "" : Request.QueryString["ReturnUrl"].ToString(); 
     //if this is Admin can access to Admin Area only 
     if (str.Contains("Admin") == true || str.Contains("admin") == true || str.Contains("ADMIN") == true) 
      { ....... 
+0

이것은 안전하지 않습니다. 사용자는 URL을 조작하여 액세스 할 수 있습니다. – PHeiberg

+0

나는 코드의 나머지 부분을 생략했다. 그 후에는 사용자 자격 증명을 확인하는 것이 확실합니다! 나는 원래의 질문에서 필요한 다른 사이트 영역에 다른 역할을 라우팅하기 위해 사용자 자격 증명 검사 위에이 코드를 추가 할 것을 제안했습니다 – enricoariel

+0

사용자가 URL을 확인한 후에 권한이 있는지 확인하면 매개 변수의 요점을 실제로 볼 수 없습니다 . 사용자가 실제로 관리자인지 확인해야합니다. – PHeiberg

관련 문제