0

我正在使用 asp.net mvc 3 制作一个 Web 应用程序,它也具有登录功能。

有 3 种不同类型的用户将使用该站点:管理员、操作员和分销商。

如何创建限制经销商访问网站管理员和运营商部分的登录名。同样,操作员不应该能够访问管理员和分销商部分。管理员也不能访问其他类型的用户部分。即网站应该在登录后将管理员类型的用户重定向到他自己的网站部分。

最后,没有人应该能够在没有登录的情况下访问他们自己的网站部分。

请任何人都可以帮助我。

4

1 回答 1

3

查看ASP.NET 的成员资格模型。此模型用于对 Web 应用程序的不同部分的用户进行身份验证和授权。

使用成员资格模型,在您的应用程序中定义三个角色:管理员、操作员和分销商。当然,也可以在您的应用程序中创建用户并将他们划分为这些角色。

最后是实际的身份验证和授权。使用Authorize 属性来定义用户必须拥有哪个角色才能访问您网站的某个部分。

[Authorize(Roles = "Operator")]
public ActionResult OperatorOnlyStuff()
{
    return View();
}

并且为了确保用户应该登录以访问您网站上的任何内容,请定义自定义身份验证路由约束

public class AuthenticatedRouteConstraint : IRouteConstraint
{
    public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
    {
        return httpContext.Request.IsAuthenticated;
    }
}

并在您的默认路由中使用此自定义身份验证路由约束:

routes.MapRoute(
    "Default",
    "{controller}/{action}/{id}",
    new { controller = "Home", action = "Index", id = UrlParameter.Optional },
    new { isAuthenticated = new AuthenticatedConstraint()}
);
于 2012-08-06T13:29:26.863 回答