我有一个 MVC 3 应用程序,可用于匿名用户和经过身份验证的用户。
这是通过将 IIS 身份验证模式配置为同时启用匿名身份验证和 Windows 身份验证,然后将身份验证模式 web.config 设置设置为“Windows”并选择性地将自定义授权属性应用于需要身份验证检查的操作来实现的。
问题是在某些操作中我不需要应用该属性(因此匿名用户也可以访问它),但是如果管理员用户正在浏览它,那么我想检索他的 User.Identity.Name 值.
应用程序的行为无法预测,在某些情况下,一旦用户在之前的操作中通过了身份验证,那么 User.Identity.Name 属性对于用户会话的其余部分仍然可用。但是,在其他情况下,它会以空字符串的形式出现。
那么,我如何真正告诉应用程序“去验证这个用户”?如果 Authorize 属性可以强制对用户进行身份验证,那么我怎样才能在一个操作中实现这种相同的按需效果呢?
谢谢你的帮助,
米