问题标签 [formsauthentication]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 表单身份验证和身份验证 cookie 不持久
意识到有很多与表单身份验证和 cookie 的持久性有关的问题,但是花了一天的大部分时间钻研,我仍然遇到困难。
我的问题
我正在开发一个 Web 应用程序(VS2010,但 webapp 是 f/w 3.5),它将对应用程序某些部分的访问限制为经过身份验证的用户(而其他部分是打开的)。我的问题是我的身份验证 cookie 在我关闭浏览器后似乎没有持续存在。
我的方法
我写了一个简单的 login.aspx 页面,在 web.config 中配置如下:
...并且各个页面的行为声明如下:
...除了这些饼干恶作剧之外,在各个方面都很好用...
一旦我在 login.aspx 页面中针对数据库(工作正常)对用户的登录名和密码进行了身份验证,我就会手动创建身份验证 cookie。如果用户选中“保持登录”复选框,则使用以下方法生成 cookie:
这里的目标是我将用户 Guid 存储在 auth cookie 中,然后我将使用它来将用户对象恢复到会话中(这也在 login.aspx 页面中,我的想法是我想采摘来自我创建的 auth cookie 的用户 guid,并使用它将相应的用户记录填充到会话中并重定向到请求的页面):
最后,这是我的 login.aspx 页面上登录按钮的代码:
正如您所看到的,没有什么特别复杂的事情发生,但是尽管在 GenerateAuthenticationCookie(..) 中创建的 authCookie 被正确创建(据我所知)它不会持续存在。
我注意到的一件事是,如果我将一些代码放入 global.asax.cs 中的 Application_AuthenticateRequest 方法中,例如:
...该断点有时会在新的浏览器会话之后被命中,尽管一旦我离开启动页面(在本例中是一个纯粹用于开发和测试的虚拟 start.aspx 页面)它就会停止命中。
所以,为这个冗长的问题道歉,但我真的在这里受苦。
我检查过/尝试过的事情
确保代码正在执行 - 是 浏览器设置 - 即退出时不删除 cookie - 确认不删除 尝试不同的超时 - 例如与 web.config 超时相同或不同,似乎并不重要......当然至少有二十或三十个不同的先前问题,但无济于事。
系统/开发环境
Windows 7 64 位,VS2010(但 proj 是 3.5),SQL Server 2008 Express。
在我的开发服务器上,这个问题仍然存在,所以我不确定它是否一定是环境问题——那台机器是运行 SQL 2008R2 的 WS2008R2 机器——同样的问题仍然存在。
有没有人在任何地方对我可以在这里尝试的事情有任何想法?我有一种预感,我可以通过拦截 global.asax.cs 中的初始 Application_AuthenticateRequest 命中并将某些内容填充到会话状态中以标记为“已验证”(以避免每次调用该方法时进行昂贵的身份验证尝试,结果是每页要多次。
提前致谢,
约翰
asp.net - 使用表单身份验证,我如何处理重定向到不同的子域
我有多个使用表单身份验证的子域。一旦用户登录,他们就可以进入任何其他子域。
这是我的问题:如果我去reporting.example.com/reporting.aspx,我会被重定向到login.example.com/login.aspx。输入我的凭据后,我被重定向到不存在的登录名 .example.com/reporting.aspx。
我有一个解决方法,但我想知道是否有更清洁的方法。我目前所做的是将reporting.example.com 的表单元素的loginUrl 属性设置为login.example.com/login.aspx?domain=reporting.example.com。
然后,在 login.aspx 代码中,经过身份验证并设置 cookie 后,我查看是否有一个域变量传入 URL。如果是这样,我会在 returnUrl 前面加上域并进行简单的重定向。
它有效,但感觉很糟糕。有任何想法吗?
asp.net - 使用 ASP.NET 表单验证处理程序 plupload
我正在尝试使用plupload在 ASP.NET 中上传文件。理想情况下,我的上传处理程序需要包含在我网站上的表单身份验证中,但在这种情况下它不起作用。我看不到 plupload 在 firebug 中发出的请求,也不太明白它在做什么。有没有办法解决这个问题?
这是我的plupload初始化代码:
.net - 使用 ASP.NET MVC 更改身份验证机制的最佳方法
我需要读取、生成并保持更新与表单身份验证不同的身份验证 cookie。
我看到了许多选项,例如使用IHttpHandlers
、、IHttpModules
自定义授权过滤器等。
你会怎么处理?
c# - FormsAuthenticationTicket.expiration v web.config 值超时
这是一个 MVC2 网站,我遇到了 FormsAuthentication 票证的问题。用户超时 30 分钟后无法重新登录。在测试期间,DateTime.Now.AddMinutes(30) 值设置为 5000,一切正常,但现在已更改为 30,这就是问题开始的时候
从 cookie 创建
Web.config 文件
工单创建中的过期值是否需要 >= web.config 值?
.net - 如何解决此 SSRS 身份验证异常?
我正在尝试在 SSRS 2008(不是 R2)中实现一些自定义安全代码,以允许表单身份验证而不是 Windows 身份验证。我的解决方案基于 Microsoft 示例代码,并设法让其中大部分工作正常。我唯一遇到问题的地方是登录到实际的报告管理器 URL 时。
问题 1
使用 URLhttp://localhost/Reports_MSSQL2008/
时,它不会拾取UILogon.aspx
我复制到/Pages
文件夹中的页面(按照 Microsoft 示例的说明)。我已修改 ReportManager 文件夹中的 web.config 以包含以下内容:
我尝试更改路径以匹配 aspx 文件的确切路径,但仍然没有乐趣!
问题 2
由于上述问题,我尝试通过 URL 进入 UILogon 和 ReportManager http://localhost/Reports_MSSQL2008/Pages/UILogon.aspx
,. 这是因为我可以进入我的自定义代码(UILogon.aspx.cs 和 IAuthorisation / IAuthentication 代码),我可以看到它执行以下操作:
- 验证/授权用户
- 创建 cookie
- 将 cookie (sqlAuthCookie) 存储在响应/请求 cookie 容器中
- 执行 response.redirect 到 /Folder.aspx 页面
问题是,当 response.redirect 回到 GetUserInfo() 方法时,HttpContext.Current.User 为空,并且不再有 cookie。因此,返回一个空的 IIdentity(不能将其设置为其他任何内容!!)并且 SSRS 抛出错误...
Microsoft.ReportingServices.Diagnostics.Utilities.AuthenticationExtensionException:
身份验证扩展引发意外异常或返回无效值:identity==null。
有关信息 - 当我启动 Report Builder / Visual Studio bi proj / Web 服务 URL 时,它完全符合我的要求并且工作正常......这只是导致问题的报告管理器。
asp.net-mvc - sqlrole manager 动态添加连接字符串和/或提供程序
如何将连接字符串动态添加到角色管理器?
我正在使用带有表单身份验证的 asp.net mvc 3,由于这是 SAAS 应用程序,每个客户端的连接字符串现在将动态更改我可以基于动态连接字符串创建新的数据上下文,但是有没有办法为角色提供相同的连接字符串经理?
当前使用 web.config 配置 rolemanger 如下(仅示例不是实际文件)
windows-phone-7 - Windows Phone 7 - 使用 Asp.net 表单身份验证进行身份验证
清除一切后按预期工作
我已经设置了一项服务来获取asp.net表单身份验证,以便从我的Windows手机连接......
模拟器中的一切都运行良好(远程连接登录,然后使用 cookiecontainer 执行其他服务请求),但是一旦部署在手机上,我就可以正确完成登录,但是任何其他服务调用都不起作用,httpcontext .currentuser.authenticated 是假的!
有什么想法吗?是的,我允许在手机上使用 cookie,并在所有通话中使用相同的 cookiecontainer...
.net - 如何使用 WCF 执行会员提供者身份验证?
我正在扩展一个 ASP.NET 应用程序以使用 WCF 提供 Web 服务。我必须使用 WSHttpContextBinding 以便应用程序可以跟踪用户的会话。到目前为止,我已经成功连接到该站点而无需任何身份验证,但我想要一些安全性。目前,我想将 service.svc 放在使用表单身份验证保护的管理文件夹中。目前,如果将我的 service.svc 放在那里并尝试输入我的 service.svc 的 url,我会得到标准的 Windows 身份验证对话框。我已经阅读了几篇关于此的帖子,但这一切都很令人困惑。
asp.net - 加密/创建 ASP.NET 表单身份验证票证需要哪些输入?
我读到的所有内容都指向 web.config 文件中的 MachineKey 元素,它是唯一决定加密票证价值的东西,但目前我有很多证据可以反驳这一点。
所以我的问题是:鉴于机器密钥和票证内的数据相同,什么可以使票证加密值(特别是长度)不同?
编辑
我们看到时间戳导致值的变化。然而,在其中一种环境中,创建的值本身要短得多。其中两个站点(.NET 4、MVC2/3)可以很好地应对它。但是,.NET 2.0 / WebForms 站点无法使用相同的机器密钥对其进行解密。