今天主要讲一下对于ASP.NET的页面级权限控制
数据结构:用户表、角色表、权限表、角色权限派生表
为用户添加权限的数据配置后,
自定义类对MVC继承Controller
对其内置方法Initialize进行重写。
对其进行登录判断和权限判断
然后将需要做权限控制的Controller进行对自定义类的继承
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc; namespace ZX.B2C.GoodBaby.UI.App_Start
{
public class BaseClass : Controller
{
protected override void Initialize(System.Web.Routing.RequestContext requestContext)
{
base.Initialize(requestContext);
if (!IsLogin())
{
Response.Redirect("/Home/toLogin");
}
string urlpath = Request.Url.AbsolutePath;
bool t = CheckPage(urlpath);//判断当前页面当前用户是不是有权限
if (!t)
{
Response.Write("<html><head><title>系统安全提示</title><script>alert('您没有权限进行当前操作,请重新选择用户登陆操作');location.href='/Home/Vi_Index.aspx'</script></head><body></body></html>");
Response.End();
}
}
protected Boolean IsLogin()
{
if (Request.Cookies["GoodBabyMemberCookie"] != null)
{
return true;
}
else
{
return false;
}
}
static bool CheckPage(string urlpath)
{
if (urlpath == "/Home/Index" || urlpath == "/Home/Vi_Index")
{
return true;
}
else
{
#region 自身业务逻辑对权限控制的判断 BLL.SystemInfo systemInfoBLL = new BLL.SystemInfo();
ZX.B2C.GoodBaby.Model.UserInfo userInfoModel = new Model.UserInfo(); userInfoModel.UserInfoId = Convert.ToInt32(ZX.B2C.GoodBaby.Common.CookieHelper.GetCookieValue("GoodBabyMemberCookie"));
List<Model.SystemInfo> systemInfoList = systemInfoBLL.UserRoleSystemInfoList(userInfoModel.UserInfoId);
systemInfoList = systemInfoList.Where(p => p.SystemInfoUrl == urlpath).ToList();
if (systemInfoList != null)
{
if (systemInfoList.Count > )
{
return true;
}
else
{
return false;
}
}
else
{
return false;
} #endregion }
}
}
}
public class HomeController : Controller
WebForm的权限控制方法
自定义类对Page进行继承
对其内置方法OnLoad进行重写
然后将需要做权限控制的Page进行对自定义类的继承
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI; namespace ZX.B2C.GoodBaby.UBack
{
public class BacePage:Page
{
public BacePage()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
BLL.UserInfo userInfoBLL = new BLL.UserInfo();
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
}
protected override void OnLoad(EventArgs e)//重写页面的load
{
BasePage_Load();//处理权限的Session的方法
base.OnLoad(e);
}
public void BasePage_Load()
{ if (Request.Cookies["AdminCookie"] == null)//在这里我们行判断用户有没有登陆如果登陆了我们再判断权限
{
Response.Write("<html><head><title>系统安全提示</title><script>alert('为了系统安全,请重新登陆');location.href='/Login/Index.aspx';</script></head><body></body></html>");
Response.End();
}
string urlpath = Request.Url.AbsolutePath;//取当前访问的页面
bool t =QuanXian.CheckPage(urlpath);//判断当前页面当前用户是不是有权限
if (!t)
{
Response.Write("<html><head><title>系统安全提示</title><script>alert('您没有权限进行当前操作,请重新选择用户登陆操作');location.href='/Home/Vi_Index.aspx'</script></head><body></body></html>");
Response.End();
} }
}
}
public partial class Add : BacePage