[英]How to sign out so that when the page is rendered it does not know the user is authenticated?
[英]How do I sign out a user authenticated on an external page with CAS, FormsAuthentication
我在項目周圍包裝了一些代碼以啟用用戶身份驗證。 它似乎正在使用FormsAuthentication
以及.NetCasAuthentication
。 當用戶想要登錄時,我將其重定向到URL保存在DotNetCasClient.CasAuthentication.FormsLoginUrl
的外部頁面,並在成功嘗試登錄后設置User.Identity
對象。 到現在為止還挺好。
現在,如何正確注銷用戶?
我試過了
FormsAuthentication.SignOut()
HttpContext.Current.User = new GenericPrincipal(new GenericIdentity(string.Empty), null);
但是,當我向應用程序發送另一個請求時,它仍然能夠在某處找到該用戶的信息。
CasAuthentication是否保存到cookie? 還是更有可能它位於外部登錄頁面所定義的某個唯一位置? 我可以選擇重定向到相應的外部注銷頁面,但是我不知道如何在不重定向到該頁面並離開我的應用程序的情況下執行此操作,而且我也不想這樣做。
謝謝閱讀。
我仍然不太確定是什么導致了幻像注銷,但是我能夠解決我遇到的問題。
我在應用程序的登錄和注銷頁面中包含了一個iframe,其源(src)分別指向外部登錄和注銷頁面。 為了告訴CAS在驗證FormsAuthentication憑據后重定向到的位置,我不得不在登錄iframe的src url末尾附加一個查詢字符串,看起來像?TARGET=http%3a%2f%2fsome.url.aspx
(轉義了目標URL。'%3a'是冒號(:)的URL編碼,'%2f'是正斜杠(/)的URL)
因此,例如,外部登錄URL是https://www.externalsite.com/login
,我想在登錄后重定向到我的歡迎頁面http://www.mysite.com/welcome.aspx
,這是我的應用程序的登錄頁面。 iframe src將需要
`https://www.externalsite.com/login?TARGET=http%3a%2f%2fwww.mysite.com%2fwelcome.aspx`
之后,一切似乎都正常。
我找不到TARGET查詢字符串的文檔,但似乎與此處描述的'targetService'參數有關。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.