1

我在我的项目周围包装了一些代码以启用用户身份验证。它似乎正在使用FormsAuthentication以及.NetCasAuthentication. 当用户想要登录时,我将他们重定向到URL 保存在 的外部DotNetCasClient.CasAuthentication.FormsLoginUrl页面,并且在成功登录尝试后设置User.Identity对象。到现在为止还挺好。

现在,我如何正确注销用户?

我试过了

  • FormsAuthentication.SignOut()
  • 按照此处的建议使几个 cookie 过期
  • 甚至明确地取消 User 对象:HttpContext.Current.User = new GenericPrincipal(new GenericIdentity(string.Empty), null);

但是当我向我的应用程序发送另一个请求时,它仍然能够在某处找到该用户的信息。

CasAuthentication 是否保存到 cookie 中?还是更有可能它位于外部登录页面定义的某个独特位置?我可以选择重定向到相应的外部注销页面,但如果不重定向到它并离开我的应用程序,我不知道该怎么做,而且我不想这样做。

谢谢阅读。

4

1 回答 1

1

我仍然不太确定是什么导致了幻象注销,但我能够解决我遇到的问题。

我在我的应用程序的登录和注销页面中包含了一个 iframe,其源 (src) 分别指向外部登录和注销页面。为了告诉 CAS 在验证 FormsAuthentication 凭据后重定向到哪里,我必须在登录 iframe 的 src url 的末尾附加一个查询字符串,如下所示?TARGET=http%3a%2f%2fsome.url.aspx

(目标 url 被转义。'%3a' 是冒号 (:) 的 url 编码,'%2f' 是正斜杠 (/))

所以,比如说,外部登录网址是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' 参数有关。

于 2013-08-01T20:25:27.620 回答