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
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);
|
|
}
|
|
}
|
|
}
|