如何在使用Windows身份验证时强制MVC应用程序填充User.Identity.Name值

时间:2013-05-21 20:39:18

标签: asp.net-mvc-3 windows-authentication

我有一个MVC 3应用程序,可用于匿名用户和经过身份验证的用户。

这是通过配置IIS身份验证模式以启用匿名身份验证和Windows身份验证,然后将身份验证模式web.config设置为“Windows”并将自定义授权属性有选择地应用于需要身份验证检查的操作来实现的。

问题是在某些操作中我不需要应用属性(因此匿名用户也可以访问它),但是如果管理员用户正在浏览它,那么我想要检索他的User.Identity .Name值。

应用程序的行为无法预测,在某些情况下,一旦用户在之前的操作中进行了身份验证,则User.Identity.Name属性仍然可用于该用户的其余会话。但是,在其他情况下,它会以空字符串形式出现。

那么,我如何实际告诉应用程序“去验证这个用户”?如果Authorize属性可以强制对用户进行身份验证,那么如何在操作中按需实现同样的效果呢?

谢谢你的帮助,

中号

1 个答案:

答案 0 :(得分:0)

  

如果Authorize属性可以强制用户进行身份验证,   那么如何在一个动作中按需实现同样的效果?

AuthorizeAttribute做同样的事情:

return new HttpUnauthorizedResult();