c# – 在web.config的“authentication”中指定“domain”参数后
发布时间:2020-12-15 21:16:50 所属栏目:百科 来源:网络整理
导读:我有退出处理程序,以前工作正常: public void ProcessRequest(HttpContext context) { //// Sign out System.Web.Security.FormsAuthentication.SignOut(); //// Clear Session if (context.Session != null) { context.Session.Clear(); } /// Expire all
我有退出处理程序,以前工作正常:
public void ProcessRequest(HttpContext context) { //// Sign out System.Web.Security.FormsAuthentication.SignOut(); //// Clear Session if (context.Session != null) { context.Session.Clear(); } /// Expire all the cookies so browser visits us as a brand new user List<string> cookiesToClear = new List<string>(); foreach (string cookieName in context.Request.Cookies) { HttpCookie cookie = context.Request.Cookies[cookieName]; cookiesToClear.Add(cookie.Name); } foreach (string name in cookiesToClear) { HttpCookie cookie = new HttpCookie(name,string.Empty); cookie.Expires = DateTime.Today.AddYears(-1); context.Response.Cookies.Set(cookie); } context.Response.Redirect("~/default.aspx"); } } 将“domain”参数添加到web.config的身份验证部分后: <forms timeout="50000000" loginUrl="~/login" domain='mysite.com'/> …它不再记录用户 – 在重定向到“?/ default.aspx”之后我仍然可以看到用户登录(我将断点添加到该页面的Load事件并检查HttpContext.Current.User. Identity.IsAuthenticated,它仍然= true). 然后我删除“domain =’mysite.com’”,它会毫无问题地记录用户. 我确实需要指定域,因为我添加了一个具有自己的应用程序的子域,但我希望它共享身份验证cookie. 任何想法都非常感谢! 解决方法
当我重新创建cookie到期时,我需要指定域:
cookie.Domain = FormsAuthentication.CookieDomain; 这解决了这个问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |