我有一個MVC應用程序使用身份驗證服務,使用IsAuthenticated()方法返回true/false。爲什麼Identity.IsAuthenticated()有時真實有時是錯誤的
它似乎沒有連接到FormsAuthentication.SignOut()方法或當我登錄時添加一個新的授權cookie。
登陸:
HttpContext.Current.Response.Cookies.Add(new HttpCookie(FormsAuthentication.FormsCookieName, FormsAuthentication.Encrypt(authTicket)));
登出:
FormsAuthentication.SignOut();
我有一個自定義授權我的控制器,它要求具有IsAuthenticated(),但它返回錯誤值的身份驗證服務的屬性。
有誰知道爲什麼下面的代碼有時會返回true或false?
userPrincipal.Identity.IsAuthenticated
嗨,我沒有SSL設置。當它從我的自定義授權屬性AuthorizeCore()上的服務調用時,IsAuthenticated返回false。 – jaffa 2011-04-26 12:52:00
@Jon然後可能無法讀取cookie和會話。您是否已經設置了服務來讀取寫入cookie和會話數據? – Aristos 2011-04-26 13:31:44
我想我可能已經意識到了這個問題。我的認證服務依賴於IPrincipal,它由StructureMap在啓動過程中注入。但是,在那一點上它將是未經驗證的。我需要在當前線程中使用IPrincipal。這傳遞給我的CustomAuthorise類(從AuthorizeAttribute繼承)上調用的AuthorizeCore()。 – jaffa 2011-04-27 09:41:57