簡體   English   中英

如何注銷在外部頁面上通過CAS FormsAuthentication進行身份驗證的用戶

[英]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()
  • 即將到期的幾個餅干的建議在這里
  • 甚至明確地使User對象無效: 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM