3

양식 인증을 사용하는 웹 사이트에서 호스팅되는 웹 응용 프로그램을 만들고 있습니다. 내 인증 데이터베이스 "Admins"에 역할이 있습니다. 내가 인증 아니에요 경우.ASPXAUTH Request.Cookies에 쿠키가 없습니다.

[RequireHttps] 
[Authorize(Roles = "Admins")] 
public ActionResult Index() 
{ 
    return this.View(); 
} 

내가 색인 페이지로 이동, 그것은 내 자격 증명을 입력 로그인 페이지로 저를 리디렉션 : 여기 내 컨트롤러 코드입니다. 그런 다음 로그인 페이지가 새 앱의 색인 페이지로 리디렉션되지만 컨트롤러는 사용자가 인증되었음을 인식하지 못합니다.

나는 Authorize 속성을 사용하지 않고 Chrome 개발자 콘솔에서 나가서 쿠키가 실제로 전송되었음을 확인했습니다. 그러나 Authorize 속성을있는 그대로두고 색인 페이지로 이동하면 내 컨트롤러의 요청에 대한 쿠키 모음이 비어 있습니다. 헤더 컬렉션에는 "쿠키"라는 제목의 헤더가 포함되어 있으며 헤더 값에는 .ASPXAUTH 쿠키가 포함되어 있습니다.

로그인 페이지가이 코드에 로그를 호출

FormsAuthentication.SetAuthCookie(userName, remember, "/"); 

이 문제가 모든 주요 브라우저에서 재현.

요청의 쿠키 수집을 채우려면 어떻게해야합니까?
응용 프로그램이 사용자가 실제로 인증되었음을 알게하려면 어떻게해야합니까?

편집 :
나는 여전히 작동하지만, 나는 그것이 ASPXAUTH 쿠키가 필터링되고 함께 할 수있는 뭔가 확신이 없습니다.

+0

사용자를 인증하는 로그인 동작 코드를 게시 할 수 있습니까? 모든 브라우저 또는 Chrome에서만 발생합니까? – Win

답변

1

이 문제의 원인은 여러 가지가있을 것입니다. 제 경우에는 문제는 쿠키를 쓰는 데 사용하고 있던 MVC의 버전이 해독하는 버전과 다르다는 것입니다. 모든 사이트가 MVC 4를 실행하도록 변경했으며, 한 사이트에서 만든 쿠키는 다른 사이트에서 사용할 수있었습니다.

+0

같은 프로젝트에 대해 MVC 버전은 어떻게 두 가지가 있습니까? –

+0

동일한 쿠키를 사용하는 두 개의 개별 프로젝트였습니다. – Dan

0

.ASPXAUTH 쿠키가 안전한 쿠키 (예 : SSL)로 생성 되었습니까? 그렇다면 Index.aspx는 HTTPS가 아닌 HTTP를 통해서만 제공되므로 컬렉션에 쿠키가 표시되지 않습니다.

관련 문제