在我的 Web 应用程序中,我需要根据所使用的身份验证类型采取不同的操作。该应用程序的设计和构建支持 Windows 和窗体身份验证,两者之间的切换直接从 IIS 完成。
目前,我检查在 session 开始时,用户名是否存储在 HttpContext.Current.User.Identity.Name
中。如果 Name
属性为空,则使用表单例份验证;如果不是,则该属性包含当前登录的 winuser 的名称。
是否有更好的方法来动态检查所使用的身份验证类型?
最佳答案
您可以检查主体 HttpContext.Current.User
返回的类型。如果(直接)使用 Windows 身份验证,则它应该是 WindowsPrincipal
而不是 GenericPrincipal
(我相信这就是 Forms Authentication 将设置的内容)。
如果您支持更复杂的身份验证方案(例如 ADFS),那么它可能只是某种其他形式的 ClaimsPrincipal
(以上两者都派生自它)。
关于c# - 如何动态判断是否使用了 windows 或 forms 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21252396/