在 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 中得到一个“匿名用户”?