我遇到了一個問題,我使用nginx來實現負載均衡。我用的是HttpContext.Current.User.Identity.IsAuthenticated
+分佈式緩存的Redis來告訴服務器的用戶登錄。HttpContext.Current.User.Identity.IsAuthenticated = false總是在Nginx環境中
public override void OnAuthorization(AuthorizationContext filterContext)
{
if (filterContext.HttpContext.User.Identity.IsAuthenticated && RedisSession.IsExistKey("Username"))
//HttpContext.Current.Session["Username"] == null
{
base.OnAuthorization(filterContext);
}
}
我發現Redis的緩存是好的,但httpContext.Current.User.Identity.IsAuthenticated
的地點之一是真實的。在其他網站上,它總是返回false。
例如:我使用nginx映射了兩個使用不同端口的IIS網站,當我刷新測試頁面時,它會給我不同的答案。
感謝。
您是否將用戶登錄到您的應用程序中?爲了使HttpContext.User.Identity.IsAuthenticated爲true,您必須在某個時刻將用戶添加到IdentityStore。在這裏看看這是如何在Mvc中完成的例子https://www.asp.net/mvc/overview/security/create-an-aspnet-mvc-5-web-app-with-email-confirmation-和密碼重置#需要 – Alex
@Alex我已經完成了它,但它只能登錄一個網站,另一個的狀態是False。 – MapleStory