Asp.Net MVC 4用户即使未经授权也会通过身份验证

rob*_*osa 4 authentication asp.net-mvc authorization

我在我的第一个MVC项目工作,我遇到了身份验证的麻烦.我有一个登录页面,可以通过我的活动目录正确验证用户.但是,即使经过身份验证,并非所有用户都有权访问系统,因此我使用web.config中的一个部分来检查用户是否具有权限.就像是:

<authorization>
   <allow users="john,mary,paul,bill,jane,anna" />
   <deny users="*" />
</authorization>
Run Code Online (Sandbox Code Playgroud)

它工作正常,如果没有权限,用户总是被重定向到登录.但是,当我检查用户是否经过身份验证时,结果始终为真.并且,在登录页面中,我想检查是否必须向已登录和授权的用户显示消息.就像是:

@if (User.Identity.IsAuthenticated && User.Identity.IsAuthorized)
{
   @Html.Partial("_Menu");   
}
Run Code Online (Sandbox Code Playgroud)

那么......我是怎么做到的?

Nic*_*sen 5

身份验证和授权是两个不同的概念.身份验证意味着您知道该人是谁.授权意味着他们具有特定权限.

如果您想检查他们是否有权执行某些操作并为他们提供执行该操作的按钮或链接(或访问某些数据,无论它是什么),那么您将必须检查他们是否拥有使用其他权限的权限手段.关于您的设置的一些更具体的细节将有助于更好地回答这个问题.

  • @JeremyHolovacs - 为什么要这样?会员资格仅关注身份验证.您可以使用角色或属性或web.config进行授权. (2认同)
  • @robsonrosa将用户分配给角色并使用`User.IsInRole`函数. (2认同)