MVC5 웹 응용 프로그램을 Linux MonoDevelop로 이식하려고합니다.Mono MVC5 User.Identity.IsAuthenticated는 FormsAuthentication.SetAuthCookie()를 사용한 로그인 후 false를 반환합니다.
사이트에서 FormsAuthenication을 사용하고 있으므로 로그인 작업에서 SetAuthCookie() 및 내 컨트롤러에서 로그인 된 사용자 만 기능에 액세스 할 수 있도록 AuthorizeAttribute를 cal합니다.
이 모든 기능은 Windows에서 작동합니다.
Mono로 이식하고 MonoDevelop로 디버깅 한 후 작동하지 않는 것으로 나타납니다. 사실 로그인 성공 후 사용자는 다시 로그인 페이지로 리디렉션됩니다.
HomeController에서 [Authorize] 특성을 제거해 보았습니다. 무슨 일이 일어나고 있는지를 확인하기 만하면 HomeController 동작에서 User.Identity.IsAuthenticated가 false를 반환합니다. 나는 이것이 로그인으로 리다이렉션되는 이유라고 생각합니다.
하지만 왜 User.Identity.IsAuthenticated가 false를 반환 할 수 있습니까?
Windows의 SetAuthCookie()가 http 컨텍스트에 .ASPXAUTH 쿠키를 생성하는지 확인했습니다. Linux에서는 http 컨텍스트에 .MONOAUTH 쿠키를 만듭니다. 내가으로의 Web.config에 쿠키 이름을 구성하는 시도 ...
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" name=".ASPXAUTH" />
</authentication>
하지만이 작동하지 않았다
는UPDATE는 나는 깨달았다 모노에서 SetAuthCookie은()에 정상적으로 실행 있음 하지만 쿠키가 없습니다 (Firefox 쿠키 관리 사용). 그러나 디버그에서 Response.Cookies Collection은 .ASPXAUTH 쿠키를 통합합니다. 클라이언트에서 생성 할 수없는 것 같습니다.
믿을 수 없음! 고마워, 그건 나에게도 마찬가지다. 나는 다른 쿠키 -B-를 .ASPXAUTH 쿠키와 함께 초기화했다. B-cookie는 HttpRequest에 즉시 추가되지 않아서 FormsAuthentication.SignOut()을 호출하여 내 .ASPXAUTH 쿠키를 삭제하고 B의 존재를 정확히 확인하는 일부 기능을 발생시킵니다. – cnom