根据用户类型登录

时间:2012-08-06 13:19:10

标签: asp.net-mvc-3

我正在使用asp.net mvc 3创建一个Web应用程序,它也有登录。

有3种不同类型的用户将使用该网站:Administrator,Operator&分销商。

如何创建限制分发服务器访问管理员&运营商是网站的一部分。类似地,运营商不应该能够访问管理员和经销商部分。管理员也不应该能够访问其他类型的用户。即登录后,网站应将管理员类型的用户重定向到他自己的网站。

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

请有人帮助我。

1 个答案:

答案 0 :(得分:3)

查看the membership model of ASP.NET。此模型用于对Web应用程序的不同部分的用户进行身份验证和授权。

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

最后是实际的身份验证和授权。使用Authorize attribute定义用户访问网站某个部分所必须具有的角色。

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

要确保用户应该登录以访问您网站上的任何内容,请定义custom authenticated route constraint

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()}
);