在 ASP.NET (2.0) 应用程序中,我使用 FormsAuthentication。
在 Global.asax/Application_AuthenticateRequest 方法中,我检查 HttpContext.Current.User 是否为空。
这是否足以了解表单例份验证 cookie 是否存在、票证是否过期以及表单例份验证机制是否已完成验证用户的工作?
我需要这个,因为我在该应用程序中有某些页面,有时不需要访问身份验证(基于某些条件),我将它们放在 web.config 中的单独“位置”指令中,以便将它们从“捕获所有”表单例份验证中排除。
即我正在尝试检查 Application_AuthenticateRequest 在此“位置”访问的页面是否需要保护,如果是,则了解用户是否已经通过身份验证,或者我需要重定向到登录。
编辑:如答案所示,我很可能会选择 IsAuthenticated。为了让我更好地理解它,这里有 2 个奖励问题 :)(请编辑其他答案以添加这些,谢谢):
我可以假设如果 IsAuthenticated 为真,那么 HttpContext.Current.User 肯定会包含经过身份验证的用户的用户名吗?
如果强制执行 FormsAuthentication,并且只有少数页面被“位置”指令排除,我如何才能在 HttpContext.Current.User 中得到“匿名用户”?
最佳答案
不,User
可能只是对匿名用户的引用。检查HttpContext.Current.Request.IsAuthenticated
.
关于c# - 是否 (HttpContext.Current.User != null) 足以假设 FormsAuthentication 已对用户进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/466482/