我们有许多内部公司的ASP.Net应用程序。所有都使用表单身份验证,所有都是基于会话...
我要做的是当用户退出一个应用程序时,他/她从所有应用程序中注销。
我有一些迭代cookie集合的逻辑。我可以看到所有其他ASP.Net应用程序,但我无法删除它们。
我目前正在使用以下逻辑:
// expire all asp.net app tickets
string[] allDomainCookes = HttpContext.Current.Request.Cookies.AllKeys;
foreach (string domainCookie in allDomainCookes)
{
if (domainCookie.Contains("ASPXAUTH"))
{
var expiredCookie = new HttpCookie(domainCookie) { Expires = DateTime.Now.AddDays(-1) };
HttpContext.Current.Response.Cookies.Add(expiredCookie);
}
}
HttpContext.Current.Request.Cookies.Clear();
由于某种原因,他们没有被删除。我知道他们都在那里,因为我已将它们写到页面上。他们只是没有被删除....这是因为这些是会话cookie吗?
另外我应该添加它们是某个域的所有子域,所以所有权不应该成为问题吗?
答案 0 :(得分:3)
其实......我刚刚发现了这个问题。我还需要指定域
SmtpClient client = new SmtpClient("mysmtpserver");
client.EnableSsl = true;
client.Port = 587;
client.Credentials = new System.Net.NetworkCredential("myusername", "mypassword");
MailMessage message = new MailMessage("myfromaddress", "mytoaddress");
client.Send(message);
答案 1 :(得分:2)
试试这段代码..为我工作
FormsAuthentication.SignOut();
HttpContext.Current.Session.Clear();
HttpContext.Current.Session.Abandon();
HttpCookie cookie1 = new HttpCookie(FormsAuthentication.FormsCookieName, "");
cookie1.Expires = DateTime.Now.AddYears(-1);
HttpContext.Current.Response.Cookies.Add(cookie1);
HttpCookie cookie2 = new HttpCookie("ASP.NET_SessionId", "");
cookie2.Expires = DateTime.Now.AddYears(-1);
HttpContext.Current.Response.Cookies.Add(cookie2);
答案 2 :(得分:0)
Cookie仅适用于同一个域。如果是跨域,则需要另一种解决方案。 Here is another article about Asp.net cookie