0

내장 된 역할 기반 방법없이 페이지에 대한 액세스를 제한 할 수있는 방법이 있습니까? 사용자가 admin.aspx에 액세스하려고하면ASP .Net의 수동 액세스 제어

은 기본적으로 다음 다음 \ login.aspx&redirect_url=admin.aspx

로 리디렉션, 그들은 자신의 자격 증명을 다시 게시하고 나는 그들에게 등 세션 쿠키를 제공 할 것입니다.

예가 있습니까?

감사

편집 :

내 데이터베이스 사용자 이름과 암호를 가진 직원을 가지고 있기 때문에 ASP.NET이 그것을 수행하는 방법을 사용할 수 없습니다. ASP는 역할 등으로 자체를 만듭니다.

+0

"역할 기반 방식으로 구축하지 않은"것은 무엇을 의미합니까? 양식 인증은 지원하지 않습니까? –

+0

데이터베이스에 사용자 이름과 암호가있는 직원이 있기 때문에 ASP.NET에서 사용하는 방식을 사용할 수 없습니다. ASP는 역할 등으로 자체적으로 만듭니다. – jmasterx

+1

사용자 이름별로 인증을 사용할 수도 있습니다. 그것은 단지 역할이 아닙니다. –

답변

1

먼저 로그인 할 때 FormsAuthentication 쿠키를 설정해야합니다. 그래서, 당신의 코드에서 로그인에 성공한 당신이 쿠키를 설정할 수 있습니다 당신이 경우

FormsAuthentication.RedirectFromLoginPage(theUsername, true); 

(참 : 더 나은 아직

FormsAuthentication.SetAuthCookie(theUsername, true); 

또는, 당신은 쿠키 및 리디렉션을 처리하기 위해 이것을 사용할 수 있습니다) 지속 쿠키와 원하는

당신은 폴더에 web.config 파일을 바꾸어 관리 폴더를 보호 할 수 있습니다 :

<?xml version="1.0"?> 
<configuration> 
    <system.web> 
     <authorization> 
      <allow users="adminusername1,adminusername2"/> 
      <deny users="*"/> 
     </authorization> 
    </system.web> 
</configuration> 

이제 누군가가 해당 관리 폴더에 접속하여 로그인하지 않은 경우 자동으로 메시지를 보낼 것입니다. login.aspx?ReturnUrl=admin.aspx

또 다른 고려 사항은 RoleProvider입니다. 당신이 생각하는 것보다 훨씬 덜 위험합니다.관리자와 같은 역할을 수행해야하는 경우 좋은 생각입니다.

0

HttpContext.Session을 사용하여 세션 변수를 유지할 수 있습니다.

당신은 같은 세션에 뭔가를 넣을 때 :

HttpContext.Current.Session["IsAuthenticated"] = "true" 

당신은 그것에 대해 걱정하지 않아도 Asp.Net 당신을 위해 쿠키를 생성합니다. 쿠키는 세션이 끝날 때 만료됩니다. 사용자 정의 로그인 메소드를 사용하여 사용자가 인증 된 세션 변수에 저장할 수 있습니다. 그리고 제한된 페이지에서 당신은 같은 세션 변수를 확인하십시오

string isAuthenticated = HttpContext.Current.Session["IsAuthenticated"] 

편집 :

당신은 Asp.Net 인증을 사용하고 사용자 이름에 액세스 기반을 제한하려면 :

<authorization> 
    <allow users="John"/> 
    <deny users="*"/> 
</authorization> 

테이크 Asp.Net site navigation을보고 사용자에게 동일한 액세스 규칙을 사용할 수 있습니다.

편집 :

그런 다음 방법 MikeSmithDev에 의해 제안 자격 증명 데이터베이스에 대해 인증하려면

길을 가야하는 것입니다. Create custom MembershipProvider 또는 FormsAuthentication methods을 사용하십시오.

+0

하지만 "Keep Me Logged In"기능을 원한다면 쿠키가 필요하다고 생각합니까? – jmasterx