2013-11-28 1 views
3

익명 사용자에 대한 세부 정보도 입력하고 싶습니다. 그래서 프로필에 그들에 대한 사용자 ID를 만들었습니다. i는 사용자 세부 값을 User.Identity로 설정하는 방법. 양식 인증에서 거짓으로 인증되지 않음.

FormsAuthentication.SetAuthCookie(username, true); 

을 설정하고 언제 사용자 이름과 User.Identity.Name와 사용자에 관한 세부 사항,하지만 false로 User.Identity.IsAuthenticated를 원한다. 지금 나는 그것을 사실로 받아들이고있다. 특정 로그인 후에 만 ​​이것을 true로 설정하고 싶습니다.

+0

이 링크에 대한 해결책을 찾았습니다. http://stackoverflow.com/a/10524305/2866502 –

답변

4

FormsIdentity 클래스는 항상 true를 반환하도록 고정되어 있습니다. 그래서 이것은 바뀔 수 없습니다. 이름이 비어 있지 않으면 GenericIdentity조차도 true를 반환합니다.

해결 방법은 사용자 자신의 IIdentity 구현을 만들고 Global.asax의 Application_PostAuthenticateRequest 이벤트에서 양식 ID를 바꾸는 것입니다. 입증되고 안전한 솔루션입니다.

또한 실제로이 작업을 수행 할 것인지 고려하십시오. 인증되지 않은 사용자는 익명으로 이름이 없으며 내장 된 ID 클래스가 어떻게 작동하는지에 대해 매우 정교합니다.

+0

답변 해 주셔서 감사합니다. 이를 통해 솔루션에 대한 대체 접근 방식을 찾을 수있었습니다. –

0

불행히도 User.Identity.IsAuthenticated를 false로 수정할 수 없습니다. 나만의 쿠키를 만들거나이 사용자에 대한 문자열 변수를 사전으로 세션에 할당 할 수 있습니다. 이 방법으로 값을 수정하고 특정 시나리오의 값을 수동으로 삭제할 수 있습니다.