/// <summary> /// 通用的MVC操作权限验证 /// </summary> /// <param name="actionName"></param> /// <param name="controllerName"></param> /// <param name="areaName"></param> /// <param name="permissionAuthorizeMode">验证模式类型</param> /// <returns></returns> public static bool GeneralValidate(string actionName, string controllerName, string areaName = "", PermissionAuthorizeModes permissionAuthorizeMode = PermissionAuthorizeModes.Normal) { if (permissionAuthorizeMode == PermissionAuthorizeModes.None) { return true; } PermissionValidateConfig config = PermissionValidateConfig.GetConfig(); if (config == null) { return true; } KeyValuePair<Guid,int>? pemissionInfoRequired = GetPermissionInfo(config, areaName, controllerName, actionName); //未配置的资源类型不需要控制权限 if (pemissionInfoRequired == null) { return true; } else { bool isCookieSuccessful = PermissionValidation.ReadCookie(); if (isCookieSuccessful == false) { return false; } else { if (permissionAuthorizeMode == PermissionAuthorizeModes.LoginedAsPass) { return true; } } IUser currentUser = BusinessUserBLL.CurrentUser; //对超级管理员类型的用户不做权限限制 if (currentUser.UserType == UserTypes.SuperAdmin) { return true; } foreach (KeyValuePair<Guid, PermissionItem> kvp in currentUser.PermissionItems) { PermissionItem currentPermission = kvp.Value; if (currentPermission.PermissionItemGuid == pemissionInfoRequired.Value.Key) { int permissionValueRequied = pemissionInfoRequired.Value.Value; if ((currentPermission.PermissionItemValue & permissionValueRequied) == permissionValueRequied) { return true; } } } return false; } }
/// <summary> /// 通用的MVC操作权限验证 /// </summary> /// <param name="permissionAuthorizeMode">验证模式类型</param> /// <returns></returns> public static bool GeneralValidate(PermissionAuthorizeModes permissionAuthorizeMode = PermissionAuthorizeModes.Normal) { string areaName = MVCHelper.GetCurrentAreaName(); string controllerName = MVCHelper.GetCurrentControllerName(); string actionName = MVCHelper.GetCurrentActionName(); return GeneralValidate(actionName, controllerName, areaName, permissionAuthorizeMode); }