c# - 是否 (HttpContext.Current.User != null) 足以假设 FormsAuthentication 已对用户进行身份验证

标签 c# .net asp.net .net-2.0 forms-authentication

在 ASP.NET (2.0) 应用程序中,我使用 FormsAuthentication。

在 Global.asax/Application_AuthenticateRequest 方法中,我检查 HttpContext.Current.User 是否为空。

这是否足以了解表单例份验证 cookie 是否存在、票证是否过期以及表单例份验证机制是否已完成验证用户的工作?

我需要这个,因为我在该应用程序中有某些页面,有时不需要访问身份验证(基于某些条件),我将它们放在 web.config 中的单独“位置”指令中,以便将它们从“捕获所有”表单例份验证中排除。

即我正在尝试检查 Application_AuthenticateRequest 在此“位置”访问的页面是否需要保护,如果是,则了解用户是否已经通过身份验证,或者我需要重定向到登录。

编辑:如答案所示,我很可能会选择 IsAuthenticated。为了让我更好地理解它,这里有 2 个奖励问题 :)(请编辑其他答案以添加这些,谢谢):

  1. 我可以假设如果 IsAuthenticated 为真,那么 HttpContext.Current.User 肯定会包含经过身份验证的用户的用户名吗?

  2. 如果强制执行 FormsAuthentication,并且只有少数页面被“位置”指令排除,我如何才能在 HttpContext.Current.User 中得到“匿名用户”?

最佳答案

不,User 可能只是对匿名用户的引用。检查HttpContext.Current.Request.IsAuthenticated .

关于c# - 是否 (HttpContext.Current.User != null) 足以假设 FormsAuthentication 已对用户进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/466482/

相关文章:

c# - 有没有一种优雅的方式来重复一个 Action ?

asp.net - 检查是否处于集成管道模式

c# - 系统.Security.Cryptography.CryptographicException : The handle is invalid

c# - 如何包含来自单个用户的交易

c# - Azure 搜索为什么 OCRed 文本未按正确的顺序合并到 merged_content 字段中?

c# - 如何将项目添加到 Windows Shell(右键单击)?

C#:修改 XML 文件的 header

c# - 测试源与 2010 相比不可用

.net - 如何避免在 Visual Studio 2008 中自动附加到 T-SQL 进行调试?

C# - 将 .NET 程序集加载到单独的 AppDomain 中以便卸载它