이가는 MembershipProvider에 너무 많은 관련이없는 것으로 밝혀졌다,하지만 FormsService에 :
가장 좋은 방법은하여 Application_AuthenticateRequest 이벤트에 해당 배열에 대한 현재 사용자를 확인하고 거기에 그들에 서명합니다. 내 마지막 해결책은 여기에 게시 된 다른 두 가지 답변의 일종 인 것으로 판명되었습니다.
계정 컨트롤러에서 내 자신의 FormsAuthenticationTicket을 LogOn 작업으로 만들었습니다. 사용자의 인증 된 세션에 대한 고유 식별자를 생성하고 해당 식별자를 데이터베이스에 저장합니다. 신뢰할 수있는 조회를 위해 auth 티켓의 UserData 부분에 사용자 ID를 추가했습니다. 기본적으로 인증 티켓에는 사용자 이름 만 포함되었습니다. FormsAuthenticationTicket은 사용자 로그온 성공시 쿠키에 저장됩니다.
기본적으로 모든 것은 FormsService.SignIn (model.UserName, model.RememberMe)을 대체합니다.
또한 Global.asax에서 public void Application_ReleaseRequestState (개체 보낸 사람, EventArgs args)를 추가했습니다. 이 기능을 확장하는 것으로 간주되는지 또는 무시할 것으로 보이지 않으므로 확실하지 않습니다. Application_ReleaseRequestState의 내부에서 사용자의 FormsAuthenticationTicket을 쿠키에서 가져옵니다. 그런 다음 auth 티켓을 해독하고 티켓의 UserData 부분에서 사용자의 UserID를 가져옵니다. 그런 다음 인증 티켓이 아직 유효한지 데이터베이스에 요청합니다. 티켓이 유효하지 않으면 사용자의 쿠키가 만료되도록 설정합니다.
강제로 사용자를 로그 오프하려면 데이터베이스에서 인증 티켓 만료 날짜를 변경하거나 데이터베이스에서 인증 티켓의 사용 안 함 비트를 전환 할 수 있습니다. 어쨌든 Application_ReleaseRequestState가 인증 티켓이 유효한지 데이터베이스에 묻는 경우 인증되지 않습니다. 따라서 쿠키는이 체크가 이루어진 후 사용자가 방문한 다음 페이지에서 만료되도록 설정됩니다.
그게 작동하지 않습니다 ... 세션.Abandon()은 현재 HttpContext에 대한 것입니다. 각 사용자의 경우가 아닙니다. – turtlepick