비슷한 질문이 제기되었지만 ASP.NET MVC (및 컨트롤러 측면)를 구체적으로 처리하는 복제본을 찾을 수 없습니다. MVC 모델에서 사용자가 로그인했는지 여부에 대한 정보를 설정하거나 얻는 모범 사례
, 내 이해 컨트롤러가있는 경우, 로그온 한 사용자를 확인하는 HttpContext를 사용을 처리해야한다는 것입니다 다음과 같이내 질문입니다. 컨트롤러가이 정보를보기에 표시 할 수 있으므로보기 자체에서 이러한 조회를 수행 할 필요가 없습니다.
어떻게하는지에 대한 표준이 있습니까? 다음과 같이
내 현재 설정은 [단순화] 내 모든 다른 컨트롤러를 상속합니다 BaseController
을 가지고
. 나는을 ViewData 값을 확인할 수 있습니다 내보기에, 자연스럽게, 그리고
protected override void Initialize(System.Web.Routing.RequestContext requestContext)
{
base.Initialize(requestContext);
ViewData["IsUserLoggedIn"] = IsUserLoggedIn; // bool property checking HttpContext.User.Identity.IsAuthenticated;
ViewData["CurrentUser"] = CurrentUser; // Property returning logged in user, or null.
}
: BaseController
에서
, 나는 다음과 같은 대체를 수행합니다.
어떻게하면 이 가능합니까? 내 설정에 문제가 있는지 알고 싶습니다. 무엇이 잘못 되었나요? 나는 내 솔루션에 100 % 만족하지 못합니다. 주로 사이클에 익숙하지 않아서 올바른 코드에 코드를 배치했는지 확실하지 않기 때문입니다.
나는 "하나의 대답으로 모두 묶습니다"라는 인식이 없으므로 나는 대부분의 통찰력을 제공하는 대답을 받아들입니다.
흥미로운 접근법. 쿠키 스키마는 FormsAuthentication 쿠키와 어떤 관련이 있습니까 (물론 Forms 인증을 사용하는 경우). – Terje
FormsAuthentication을 사용하지 않지만 일반 FormsAuthenticationTicket 및 HttpCookie를 사용합니다. 사용자가 로그인을 시도하면 내 컨트롤러는 먼저 내 도메인 계층을 호출하여 사용자 로그인을 시도합니다. 성공하면 내 컨트롤러는 암호화 된 사용자 이름을 포함하는 FormsAuthenticationTicket 개체를 만들고이를 HttpCookie에 저장하고 해당 쿠키를 Response.Cookies 컬렉션에 저장합니다. 그동안 사용자가 실제로 로그인했는지 추적하기 위해 시스템에 무언가를 추가해야했습니다 (예 : 티켓에서 사용자를로드 한 다음 로그인 한 사용자인지 확인). –
나는 통찰력을 찾고 있었고, 나는 어떤 것을 얻었다. 감사. 이 접근법을 살펴보고 현재 사용하고있는 것과 비교 한 내 자신의 경험을 살펴볼 것입니다. 사용자가 로그인했는지 여부를 추적합니다. 나는 BaseController의 Initialize가 호출 될 때마다 그것을 업데이트하면서 내 user 테이블의 마지막 활동 도장으로 처리한다. – Terje