纽威
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

50 lines
1.9 KiB

using NFine.Application.SystemManage;
using NFine.Code;
using System.Text;
using System.Web;
using System.Web.Mvc;
namespace NFine.Web
{
public class HandlerAuthorizeAttribute : ActionFilterAttribute
{
public bool Ignore { get; set; }
public HandlerAuthorizeAttribute(bool ignore = true)
{
Ignore = ignore;
}
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (OperatorProvider.Provider.GetCurrent() == null)
{
StringBuilder sbScript = new StringBuilder();
sbScript.Append("<script type='text/javascript'>alert('登录超时,请重新登录!');</script>");
filterContext.Result = new ContentResult() { Content = sbScript.ToString() };
return;
}
if (OperatorProvider.Provider.GetCurrent().IsSystem)
{
return;
}
if (Ignore == false)
{
return;
}
//if (!this.ActionAuthorize(filterContext))
//{
// StringBuilder sbScript = new StringBuilder();
// sbScript.Append("<script type='text/javascript'>alert('很抱歉!您的权限不足,访问被拒绝!');</script>");
// filterContext.Result = new ContentResult() { Content = sbScript.ToString() };
// return;
//}
}
private bool ActionAuthorize(ActionExecutingContext filterContext)
{
var operatorProvider = OperatorProvider.Provider.GetCurrent();
var roleId = operatorProvider.RoleId;
var moduleId = WebHelper.GetCookie("nfine_currentmoduleid");
var action = HttpContext.Current.Request.ServerVariables["SCRIPT_NAME"].ToString();
return new RoleAuthorizeApp().ActionValidate(roleId, moduleId, action);
}
}
}