我正在使用asp.net mvc 3创建一个Web应用程序,它也有登录。
有3种不同类型的用户将使用该网站:Administrator,Operator&分销商。
如何创建限制分发服务器访问管理员&运营商是网站的一部分。类似地,运营商不应该能够访问管理员和经销商部分。管理员也不应该能够访问其他类型的用户。即登录后,网站应将管理员类型的用户重定向到他自己的网站。
最后没有人能够在没有登录的情况下访问他们自己的网站部分。
请有人帮助我。
答案 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()}
);