我試圖使POC可能有一個使用http和https的網站。所以我有一個控制在我的母版頁需要信息,如果用戶認證與否。爲此,我想使用HttpContext.Current.User.Identity.IsAuthenticated
。如果通過身份驗證的用戶顯示信息,如果沒有出現登錄控制。ASP.NET MVC網站部分SSL身份驗證cookie未提交請求
要驗證控件,請向具有[RequireHttps]
屬性的登錄操作發出AJAX POST請求。在AJAX請求中使用的網址是:
$.ajax({ type: 'POST', url: '@Url.Action("ModalLogIn", "Authentication", null, "https", Request.Url.Host + ":44300")',
通過我使用VS2013 IIS與SSL表達的方式啓用。
正如你可以在我的AJAX請求中看到的,我在動作url中使用了HTTPS。 使用SSL向服務器發出請求,並且成功完成響應。
問題是,在隨後的請求中,ASPXAUTH cookie沒有在請求頭中傳遞。所以服務器不會得到用戶認證信息。後續的請求都是在沒有SSL的情況下進行的,都是簡單的HTTP請求。
我知道,在安全方面的身份驗證仍然不安全,因爲我期望通過HTTP傳遞ASPXAUTH,但就像我說的是POC,我想看看是否有可能使用簡單的身份驗證請求HTTPS和所有其他使用HTTP的網站。
謝謝先進。
編輯
按照要求,這是響應頭:
Access-Control-Allow-Orig... *
Cache-Control private
Content-Length 15
Content-Type application/json; charset=utf-8
Date Sat, 26 Oct 2013 18:57:55 GMT
Server Microsoft-IIS/8.0
Set-Cookie ASP.NET_SessionId=j2a53htev0fjp1qq4bnoeo0l; path=/; HttpOnly
ASP.NET_SessionId=j2a53htev0fjp1qq4bnoeo0l; path=/; HttpOnly
IAC.CurrentLanguage=en; expires=Sun, 26-Oct-2014 19:57:55 GMT; path=/
.ASPXAUTH=730DEDBFD2DF873A5F2BD581AA0E25B685CAD12C26AEA63AD82484C932E26B617687A05BB403216CC5EFCF799970810059F9CA2CF829F953580AF81FF48102003C0129AB04424F0D011A733CAAF1DE00688E5A4C93DEA97338DD2B5E7EE752F3761A470D52449BEBCA74098912DE37AA8C1E293B1C5D44EB1F9E9384DAAEF289; path=/; HttpOnly
X-AspNet-Version 4.0.30319
X-AspNetMvc-Version 3.0
X-Powered-By ASP.NET
X-SourceFiles =?UTF-8?B?QzpcTXkgRGF0YVxCaXRidWNrZXRcaWFjLXdlYnNpdGVcaW1wbGVtZW50YXRpb25cZG90bmV0XElBQy5XZWJcQXV0aGVudGljYXRpb25cTW9kYWxMb2dJbg==?=
檢查從服務器發送cookie時路徑是什麼。如果可能的話,將cookie響應頭添加到您的問題中。 – user1429080
@ user1429080添加了響應頭文件 –
那麼cookie的路徑設置爲/,所以推測問題出現在域中。有關影響Cookie域的討論,請參閱此問題和相應的答案:[link](http://stackoverflow.com/questions/1612177/are-http-cookies-port-specific)。 – user1429080