c# – ASP.NET身份验证cookie
在具有基于表单的身份验证的应用程序上,我有一个标准的ASP.NET登录控件,其中包含以下Authenticate事件处理程序.
void Login_Authenticate(object sender,AuthenticateEventArgs e) { if (Security.AuthenticateUser(Login.UserName,Login.Password)) { e.Authenticated = true; RedirectFromLoginPage(Login.UserName); } else { e.Authenticated = false; } } RedirectFromLoginPage函数如下所示: private void RedirectFromLoginPage(String username) { String returnUrl = GetReturnUrl(); FormsAuthentication.SetAuthCookie(username,true,"/"); Response.Redirect(returnUrl,true); } 这在99%的情况下都能正常工作.但是,我有时会收到无法登录的人的支持电话.他们会输入他们的凭据,重定向回主页(当一切正常时会发生这种情况),但他们不会登录. 确定它可能是一个cookie问题,我试图通过将我的隐私选项设置为“阻止所有Cookie”来重现我的环境中的问题,我能够重现问题.调用SetAuthCookie函数,但在下一页上加载HttpContext.Current.User.Identity.IsAuthenticated返回false. 在我的web.config中,身份验证设置如下: <authentication mode="Forms"> <forms loginUrl="..." timeout="180" cookieless="AutoDetect"/> </authentication> 阅读MSDN上关于AutoDetect和SetAuthCookie的文档,我得到了:
我想在我的场景中,将使用cookieless身份验证,但事实并非如此(在重定向之后,我在QueryString中看不到任何内容). 如果我在RedirectFromLoginPage函数中设置断点并测试一些我得到的值: bool cookieSupport = Request.Browser.Cookies; //"true" bool redirectWithCookies = Request.Browser.SupportsRedirectWithCookie; //"true" HttpCookieMode currentMode = FormsAuthentication.CookieMode; //"AutoDetect" 我不确定Request.Browser.Cookies是否在这里是真的.浏览器确实支持cookie,但它们都被阻止了…… 无论如何,我在一台发生问题的机器上远程遥控了几分钟.隐私设置设置为中等,因此它应该能够接受cookie.这是一个标准的Win7 / IE8设置.我尝试将网站添加到用户的受信任区域,通过https登录,但它无法正常工作.其他问题设置是相似的(没有什么真正脱颖而出的机器和用户告诉我,他们在其他网站上没有问题) 那么我在这里做错了什么? 解决方法
您是否在web.config文件中为表单身份验证cookie指定了域?它是否与网站的域名匹配?
我相信IE中的中等安全设置会阻止第三方cookie,因此问题可能是IE认为您的身份验证cookie是第三方cookie. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 无法将类型为“Finisar.SQLite.SQLiteConnection”的对象强
- ruby-on-rails – 使用Paperclip进行文件下载
- Cocos2d-X 学习笔记 21 CCString 分析
- reactjs – React Styled Components Extend
- cocos2dx3.2 往模板build_native.py加入java库脚本
- 原来jsonp这么实现啊
- 玩物圈前端技术栈总结(React+Redux)
- ios – NSAttributedStringKey给出未解析的标识符错误
- DDD CQRS与传统CRUD
- c# – 在静态属性getter中创建的新对象是否只创建一次?