我使用了来自http://www.codeproject.com/KB/aspnet/SingleSignon.aspx的单点登录演示
我为这个演示添加了一个SignOut函数,但发现了一个问题:
当我设置cookie时,FormsAuthentication.SignOut()不工作,并且无法清除cookie.Domain。
如果尚未设置cookie,则FormsAuthentication.SignOut()将工作。
我用了C# asp.net。
有人能告诉我一些简单实用的使用asp.net的单点登录和单点退出解决方案吗?
发布于 2009-11-10 21:02:26
如果您使用的是相同域名和子域的身份验证,请尝试在web.config中添加域名,而不是通过代码添加域名。如果使用此web.config条目,则无需编写任何代码
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="2880" domain="abc.com"/>
</authentication>此条目告诉asp.net引擎身份验证cookie将用于abc.com的所有子域。试着使用这个,看看它是否有效。
发布于 2010-02-17 20:54:28
这对我很有效:
在每个站点的Logout事件/方法中,使用Request对象中的Cookies集合并删除相关的cookies,如下所示:
enter code hereHttpCookie cookie = Request.Cookies.Get(".CommonCookieName");
cookie.Expires = DateTime.Now.AddDays(-1);
HttpContext.Current.Response.Cookies.Add(cookie);如果SSO中的所有站点都使用相同的cookie,则如上所述,这很简单。如果参与SSO的站点很少或每个站点都对同一主题(人员)使用自己的cookie/用户名,那么您需要删除所有cookie。(也许只使用SSO站点集合中每个站点中的用户名和cookie名称的映射来建立一个中心位置。
发布于 2011-05-27 03:06:20
这对我很管用
public virtual ActionResult LogOff()
{
FormsAuthentication.SignOut();
foreach (var cookie in Request.Cookies.AllKeys)
{
Request.Cookies.Remove(cookie);
}
foreach (var cookie in Response.Cookies.AllKeys)
{
Response.Cookies.Remove(cookie);
}
return RedirectToAction(MVC.Home.Index());
}https://stackoverflow.com/questions/1707545
复制相似问题