3

我有一个 asp.net mvc 应用程序。所有页面都可以在 asp.net mvc 应用程序中访问,只有在身份验证(授权属性)后才能访问,登录页面(匿名)除外。在登录页面中,我们有新用户的注册链接。如何将注册链接限制为仅供特定用户或特定角色访问。

我们不希望每个人都使用注册页面来创建用户名和密码。

ASP.NET MVC 授权如何实现这一点。我们在应用程序中使用标准的 SQL 成员资格和角色提供程序。

4

1 回答 1

5

确保用户登录以访问视图

完成此操作的最简单方法是使用控制器操作方法上方的 Authorize 属性。例如,我们只希望用户在已经登录网站的情况下更改他们的密码。为了防止非授权用户访问更改密码视图,我们可以像这样限制访问:

[Authorize]
public ActionResult ChangePassword()
{
    ViewData["PasswordLength"] = MembershipService.MinPasswordLength;
    return View();
}

您也可以通过检查 User 对象来手动完成此操作,如下所示:

public ActionResult ChangePassword()

    {
        if (!User.Identity.IsAuthenticated)
            return RedirectToAction("LogOn", "Account");

        ViewData["PasswordLength"] = MembershipService.MinPasswordLength;
        return View();
    }


确保用户具有特定角色以获得对视图的访问权限

您可能有一些视图应该只能由特定角色的用户访问。这也可以使用 Authorize 属性来完成,如下所示:

[Authorize(Roles = "Administrator")]
public ActionResult Index()
{
    return View();
}

您也可以使用以下方法在代码中完成此操作:

public ActionResult Index()
{
    if (!User.IsInRole("Administrator"))
        return RedirectToAction("LogOn", "Account");

    return View();
}

参考:使用我们的角色和成员资格提供者

于 2013-03-05T03:03:05.100 回答