哪里是验证用户在asp.net mvc中进行身份验证的最佳位置

时间:2011-02-03 19:33:00

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

我正在一个应用程序中工作,我需要验证该请求来自经过身份验证的用户。因为我根据用户Guid做了很多负载。

实施例

public ActionResult ManageEmployee()
{
      var loadedEmp = GetLoadedEmp(GetLoggedUserGuid());
      return View("Employee/Manage", loadedEmp);
}

我的问题是,我是否需要执行此操作“已验证用户已通过身份验证”

public ActionResult ManageEmployee()
{
 if (!User.Identity.IsAuthenticated)
 {
        return View("Account/LogOn"); 
  }

  var loadedEmp = GetLoadedEmp(GetLoggedUserGuid());
  return View("Employee/Manage", loadedEmp);
}

在每个ActionResult函数上,或者有野兽方法或集中解决方案。

由于

3 个答案:

答案 0 :(得分:11)

使用控制器中Action的AuthorizeAttribute要求用户登录以执行所述操作:

[Authorize]
public ActionResult ManageEmployee()
{
    // This code will only execute if the user is Authenticated
    var loadedEmp = GetLoadedEmp(GetLoggedUserGuid());
    return View("Employee/Manage", loadedEmp);
}

使用该属性时,如果用户未登录,用户将自动重定向到登录页面(只要您的应用程序配置正确)。

答案 1 :(得分:6)

@Justin Niessner是对的,但如果你想要一个属性应用于控制器中的每个动作,你可以将AuthorizeAttribute放在类上:

[Authorize]
public class HomeController : AreaController { ... }

答案 2 :(得分:0)

我认为您还可以使用此属性来锁定特定角色和用户 - 如果您使用角色提供程序功能。