2008-10-03 3 views
3

이전에 사용자 이름과 암호를 성공적으로 입력 한 사용자의 로그인 자격 증명을 기억하도록 로그인 컨트롤을 설정하려고합니다. Remember me 속성을 true로 설정했지만 cookie를 읽고 자동 로그인하는 모든 이벤트를 triger로 보지 않습니다.이전에 인증 된 사용자를 자동 인증하기 위해 asp.net 로그인 컨트롤을 얻는 방법은 무엇입니까?

이 작업을 수행하는 간단한 메커니즘이 있습니까?

답변

5

당신은 Forms Authentication in ASP.NET 2.0

당신은 (Web.config를 통해) 응용 프로그램을 설정해야합니다 구글 필요도 IIS 설정을 변경해야 할 수도 있습니다. 모든 과정이 매우 간단하지만 사용 가능한 설정의 힙이 있으므로 일부 기사를 읽는 것이 가장 좋습니다. ScottGu는 blog entry을 가지며 많은 세부 사항을 제공합니다.

Security Tutorials

How to: Create an ASP.NET Login PageWalkthrough: Creating a Web Site with Membership and User Login을 시도 포함 www.asp.net에서 많은 좋은 비디오의가 있습니다. SQL Server 멤버 자격 공급자를 사용하지 않으면 사용자가 직접 인증해야합니다. 이 경우에도 데이터베이스와 web.config를 설정해야합니다.


구성을 올바르게 설정하면 로그인 페이지가 생깁니다.

if (VerifyUser(name, password)) // this is not a framework method 
    FormsAuthentication.RedirectFromLoginPage(
     userName, false); // no persistent cookie 

당신이 (다른 곳에서) 인증 티켓 데이터를 읽으려면 : 당신이 그들을 인증하면 해당 로그인 페이지에서 당신은 당신을 위해 인증 티켓을 만들 폼 인증을 말한다. 인증 티켓이 만료 된 사용자가 보호 된 페이지에있는 경우

// output just writes to a StringBuilder 'sb' 
output(sb, "Identity.AuthenticationType", Page.User.Identity.AuthenticationType); 

FormsIdentity fi = Page.User.Identity as FormsIdentity; 
if (fi == null) 
{ 
    output(sb, "Identity Type", Page.User.Identity.ToString()); 
    return; 
} 

output(sb, "FormsIdentity.Ticket.IssueDate", fi.Ticket.IssueDate); 
output(sb, "FormsIdentity.Ticket.Expiration", fi.Ticket.Expiration); 
output(sb, "FormsIdentity.Ticket.Name", fi.Ticket.Name); 
output(sb, "FormsIdentity.Ticket.CookiePath", fi.Ticket.CookiePath); 
output(sb, "FormsIdentity.Ticket.UserData", fi.Ticket.UserData); 
output(sb, "FormsIdentity.Ticket.Version", fi.Ticket.Version); 
output(sb, "FormsIdentity.Ticket.IsPersistent", fi.Ticket.IsPersistent); 

점은, 한 번 인증, asp.net은 로그인 페이지로 사용자를 리디렉션합니다. Asp.net은 불필요하게 사용자를 인증하도록 계속 요청하지 않습니다.

+0

감사합니다. 나는 이미이 길을 걸어왔다. 그 기억은 결코 나를 기억하지 못한다. 한숨. – MikeJ

+0

답변에 대한 링크가 더 추가되었습니다. 한 페이지에 몇 개의 컨트롤을 설치하는 것보다 조금 더 복잡합니다. 로그인 페이지 등을 만들어야합니다. 'Remember Me'는 영구 인증 쿠키를 만들기위한 것입니다. 당신은 많은 시간을 원하지 않습니다. –

+0

감사합니다. 나를 올바른 길로 인도 해 주신 노력에 감사드립니다. – MikeJ