首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Single Sign-on SignOut问题: FormsAuthentication.SignOut()不工作

问Single Sign-on SignOut问题: FormsAuthentication.SignOut()不工作
EN

Stack Overflow用户
提问于 2009-11-10 20:19:43
回答 3查看 3.1K关注 0票数 6

我使用了来自http://www.codeproject.com/KB/aspnet/SingleSignon.aspx的单点登录演示

我为这个演示添加了一个SignOut函数,但发现了一个问题:

当我设置cookie时,FormsAuthentication.SignOut()不工作,并且无法清除cookie.Domain。

如果尚未设置cookie,则FormsAuthentication.SignOut()将工作。

我用了C# asp.net。

有人能告诉我一些简单实用的使用asp.net的单点登录和单点退出解决方案吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-11-10 21:02:26

如果您使用的是相同域名和子域的身份验证,请尝试在web.config中添加域名,而不是通过代码添加域名。如果使用此web.config条目,则无需编写任何代码

代码语言:javascript
复制
<authentication mode="Forms">

   <forms loginUrl="~/Account/LogOn" timeout="2880" domain="abc.com"/>

</authentication>

此条目告诉asp.net引擎身份验证cookie将用于abc.com的所有子域。试着使用这个,看看它是否有效。

票数 4
EN

Stack Overflow用户

发布于 2010-02-17 20:54:28

这对我很有效:

在每个站点的Logout事件/方法中,使用Request对象中的Cookies集合并删除相关的cookies,如下所示:

代码语言:javascript
复制
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名称的映射来建立一个中心位置。

票数 1
EN

Stack Overflow用户

发布于 2011-05-27 03:06:20

这对我很管用

代码语言:javascript
复制
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());
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1707545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档