Step 1: Create one MVC application.
Step 2: Create Enum for User Type.
public enum UserType
{
Customer_Administrator = 1,
Customer_User = 2,
}Step 3: Create one class file for Custom Attribute. Class name is CustomAuthorizeAttribute.public class CustomAuthorizeAttribute: System.Web.Mvc.AuthorizeAttribute
{
private readonly UserType[] allowedPermissionLevels;
public CustomAuthorizeAttribute(params UserType[] permissionLevels)
{
this.allowedPermissionLevels = permissionLevels;
}
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
bool authorize = false;
if (!HttpContext.Current.Request.IsAuthenticated || (SessionManager.Instance.CurrentUser == null))
{
FormsAuthentication.SignOut();
base.AuthorizeCore(httpContext);
}
else
{
IList < UserType > theApprovedPermissionLevelList = GetApprovedUserPermissionlevels();
foreach(UserType permissionLevel in allowedPermissionLevels)
{
if (theApprovedPermissionLevelList.Any(a => a == permissionLevel) == true)
{
if ((SessionManager.Instance.CurrentUser != null && SessionManager.Instance.CurrentUser.UserType == (int) permissionLevel))
{
authorize = true;
}
}
}
}
return authorize;
}
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
if (filterContext.Result == null) base.HandleUnauthorizedRequest(filterContext);
else filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new
{
controller = "Message", action = "AccessDenied"
}));
}
private IList < UserType > GetApprovedUserPermissionlevels()
{
IList < UserType > theApprovedRoles = new List < UserType > ();
theApprovedRoles.Add(UserType.Customer_Administrator);
theApprovedRoles.Add(UserType.Customer_User);
return theApprovedRoles;
}
}Step 4 : Add one Controller and create one actionResult method. Add CustomAuthorize before ActionResult define.[CustomAuthorize(UserType.Customer_Administrator)]
public ActionResult Index()
{
return view();
}