c# - 如何动态判断是否使用了 windows 或 forms 身份验证

标签 c# asp.net-mvc authentication

在我的 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/

相关文章:

c# - 在 C# 中将字典作为参数传递给 Http.Post

c# - 使用c#一次接受多个tcp连接

c# - 系统NullReferenceException : When adding item to a list

asp.net-mvc - 为什么 ASP.NET MVC 3 在这种情况下不启用客户端验证?

asp.net-mvc - ASP.NET MVC2(ala RSpec)中的测试 View

php - 无法在 Laravel 5.4 的 Blade 模板中使用 Auth::user()

bash - 如何在 Expect 脚本中发送带有 $ 符号的密码

c# - 为什么我会收到可空类型可能出现空赋值的警告

asp.net-mvc - 本地文件 ASP.NET/MVC 的映射路径

php - 加密的注册和登录密码出错