QiFeng.ZWY.MagWeb/Filter/PermissionFilterAttribute.cs
(完整代码) 2KBusing System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using QiFeng.LMSD.Bll;
using QiFeng.LMSD.Model;
using QiFeng.LMSD.Model.Dto;
namespace QiFeng.LMSD.MagWeb
{
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, Inherited = true, AllowMultiple = true)]
public class PermissionFilterAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var hasRight = false;
var controller = (string)filterContext.RouteData.Values["controller"];
var action = (string)filterContext.RouteData.Values["action"];
var currentAccount = HttpContext.Current.Session["McAccounts"] as ViewMcAccountDto;
var allowedModules = GetAllowedModules(currentAccount);
if (currentAccount != null && (allowedModules != null && currentAccount.RoleId != 1))
{
foreach (var t in allowedModules)
{
if (String.Equals(t.Controller, controller, StringComparison.CurrentCultureIgnoreCase) &&
String.Equals(t.Action, action, StringComparison.CurrentCultureIgnoreCase))
{
hasRight = true;
break;
}
}
}
else
{
// 如果是超级用户 直接返回 获取所有操作权限
hasRight = true;
}
if (hasRight)
return;
filterContext.HttpContext.Response.Write("<script type='text/javascript'>alert('无访问权限,请联系您的上级管理员!'); location.href = '/Home/Index';</script>");
filterContext.Result = new EmptyResult();
}
/// <summary>
/// 获取当前用户所有有权限执行的动作
/// </summary>
/// <returns></returns>
private List<Modules> GetAllowedModules(ViewMcAccountDto accountInfo)
{
var lsModuleIds = JurisdictionBll.Instance.GetModelListByRoleId(accountInfo.RoleId).Select(x => x.ModuleId).ToList();
return lsModuleIds.Select(moduleId => ModulesBll.Instance.GetModel(moduleId)).ToList();
}
}
}
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。