문제

우리는 관습을 가지고 있습니다 MembershipProvider ~에 ASP.NET.이제 사용자를 검증할 수 있는 2가지 가능한 시나리오가 있습니다.

  1. 다음을 통한 사용자 로그인 login.aspx 사용자 이름/비밀번호를 입력하여 페이지를 엽니다.나는 사용했다 로그인 제어 그리고 그것을 MyMembershipProvider.이것은 완벽하게 작동합니다.

  2. 인증 토큰은 쿼리 문자열의 일부 URL을 통해 다른 웹 사이트에서 전달됩니다.이를 위해 나는 하나의 과부하를 가지고 있습니다 MembershipProvider.Validate(string authenticationToken), 이는 실제로 사용자의 유효성을 검사하는 것입니다.이 경우에는 다음을 사용할 수 없습니다. 로그인 제어.이제 같은 것을 어떻게 사용할 수 있습니까? MembershipProvider 실제로 사용하지 않고 사용자를 확인하려면 로그인 제어?전화하려고 했는데 Validate 수동으로 로그인하지만 사용자가 로그인하는 것은 아닙니다.

내가 사용하고 있는 코드 조각은 다음과 같습니다.

if (!string.IsNullOrEmpty(Request.QueryString["authenticationToken"])) {
    string ticket = Request.QueryString["authenticationToken"];
    MyMembershipProvider provider = Membership.Provider as MyMembershipProvider;
    if (provider != null) {
        if (provider.ValidateUser(ticket))
            // Login Success
        else
            // Login Fail
    }
}
도움이 되었습니까?

해결책

유효성 검사에 성공한 후에는 FormsAuthentication.Authenticate를 호출하여 사용자를 로그인해야 합니다. http://msdn.microsoft.com/en-us/library/system.web.security.formsauthentication.authenticate.aspx

편집하다:FormsAuthentication.SetAuthCookie입니다.http://msdn.microsoft.com/en-us/library/twk5762b.aspx

또한 사용자를 가고 싶은 곳으로 다시 리디렉션하려면 다음을 호출하세요.FormsAuthentication.RedirectFromLoginPage: http://msdn.microsoft.com/en-us/library/system.web.security.formsauthentication.redirectfromloginpage.aspx

링크 텍스트

다른 팁

당신은 스스로 설정할 수 있습니다 FormsAuthenticationTicket 유효성 검사에 성공한 경우.

이 같은;

if (provider != null) {
    if (provider.ValidateUser(ticket)) {
        // Login Success
        FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(
            1, //version
            someUserName, //name
            DateTime.Now, //issue date
            DateTime.Now.AddMinutes(lengthOfSession), //expiration
            false, // persistence of login
            FormsAuthentication.FormsCookiePath
        );

        //encrypt the ticket
        string hash = FormsAuthentication.Encrypt(authTicket);
        HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, hash);

        Response.Cookies.Add(cookie);
        Response.Redirect(url where you want the user to land);
    } else {
        // Login Fail  
    }   
}

인증 정보를 쿠키로 직접 저장하는 경우가 맞습니다.하지만 강력한 해시 함수를 사용하면(예:MD5 + SHA1)은 훌륭하고 안전합니다.그런데 세션(단순한 해시 쿠키이기도 함)을 사용하는 경우 인증 정보를 첨부할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top