using System.Collections.Generic;
|
using System.Linq;
|
using Model;
|
using BLL;
|
using System.Web.Mvc;
|
namespace Lib
|
{
|
public class LoginFilter : BaseAuthorizeAttribute
|
{
|
private bool ValidateLogin = true;
|
|
private bool ValidateRequest = true;
|
|
public LoginFilter()
|
: base()
|
{
|
|
}
|
|
public LoginFilter(bool _validateLogin)
|
: base()
|
{
|
this.ValidateLogin = _validateLogin;
|
}
|
|
public LoginFilter(bool _validateLogin, bool _validateRequest)
|
: base()
|
{
|
this.ValidateLogin = _validateLogin;
|
this.ValidateRequest = _validateRequest;
|
}
|
|
public override void OnAuthorization(AuthorizationContext filterContext)
|
{
|
if (this.ValidateLogin)
|
{
|
UserInfo LoginUser = filterContext.HttpContext.Session["wms-session-userinfo"] as UserInfo;
|
string path = filterContext.HttpContext.Request.Path;
|
if (LoginUser == null)
|
{
|
string url = "/Login/Login";
|
if (!string.IsNullOrEmpty(path))
|
{
|
path = filterContext.HttpContext.Server.UrlEncode(path);
|
url = url + "?returnurl=" + path;
|
}
|
filterContext.Result = new RedirectResult(url);
|
}
|
else
|
{
|
if (ValidateRequest && path != "/")
|
{
|
if (!HasPower(path, LoginUser.UserCode))
|
{
|
string url = "/Home/Error";
|
filterContext.Result = new RedirectResult(url);
|
}
|
}
|
}
|
}
|
}
|
|
/// <summary>
|
/// 判断是否有权限操作
|
/// </summary>
|
/// <param name="ResNum"></param>
|
/// <param name="RoleNum"></param>
|
/// <returns></returns>
|
public bool HasPower(string ResNum, string RoleNum)
|
{
|
IDALGerUserMenu provider = new DALGetUserMenu();
|
List<ResMenu> ListResult = provider.GetList(RoleNum).ToList();
|
ListResult = ListResult == null? new List<ResMenu>() : ListResult;
|
bool hasPower = ListResult.Exists(a => a.ResNum.ToLower() == ResNum.ToLower() || (a.Url != null && a.Url.ToLower() == ResNum.ToLower()));
|
//超级管理员权限
|
//if (RoleNum == "SuperUser" || RoleNum=="D001")//ResourceManager.GetSettingEntity("Super_AdminRole").Value
|
//{
|
hasPower = true;
|
//}
|
return hasPower;
|
}
|
}
|
}
|