扩展ASP.NET MEMBERSHIP权限功能(四 )之页面权限
之前介绍的是如何让按钮显示在不同的用户组中,现在需要做的是 如果这本是B组具有新增功能权限访问的页,A组进来后怎么进行提示
1. HttpModule.cs
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.Security;
namespace EC.Permissions
{
public class HttpModule : IHttpModule
{
#region IHttpModule Members
public void Dispose()
{
}
public void Init(HttpApplication context)
{
context.AcquireRequestState += new EventHandler(context_AcquireRequestState);
}
void context_AcquireRequestState(object sender, EventArgs e)
{
if(HttpContext.Current.User!=null)
//检查用户是否登录,并判断是否有页面权限
if (HttpContext.Current.User.Identity.IsAuthenticated)
{
//检查当前页面是否在配置文件中
if (!DAL.CheckPage())
{
//可以在这里进行扩展
HttpContext.Current.Response.Write("无权限访问此页");
}
}
}
#endregion
}
}
2.打开Webroot 中的web.config
增加<add name="HttpModule" type="EC.Permissions.HttpModule"/>
3. 新建print.aspx在 Admin/Test/Print.aspx
访问提示 无权限访问此页
在Admin/Test/web.config增加
<Item>
<Page>Print.aspx</Page>
<Function>打印</Function>
<Val>64</Val>
</Item>
同时新增SQL
INSERT INTO aspnet_Ex_PermissionsForRoles
(RoleId, ModulePath, PermissionValue) Values
('Your RoleId', '/Admin/Test/print.aspx', 64)
Print.aspx页面代码
<%@ Register assembly="EC.Permissions" namespace="EC.Permissions.WebControls" tagprefix="cc1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>hubj.cnblogs.com</title>
</head>
<body>
<form id="form1" runat="server">
<div>
这里是Print.aspx
<cc1:PermissionsButton ID="PermissionsButton1" runat="server" >
<cc1:ButtonItem Text="打印" Type="PRINT"/>
<cc1:ButtonItem Text="返回" Type="LIST" />
</cc1:PermissionsButton>
</div>
</form>
</body>
</html>
预览显示
细心的朋友会发现为什么返回没有显示出来? 将SQL UPDATE成 66就行了 (Print+List)
如后台如何管理权限的界面就不在描述,用心的朋友可以试着UPDATE INSERT DELETE 表:aspnet_Ex_PermissionsForRoles
从下午4点整理到现在,总算写完了,欢迎交流
完 :)
目录
扩展ASP.NET MEMBERSHIP权限功能(四 )之页面权限
扩展ASP.NET MEMBERSHIP权限功能(三 )之权限控件
扩展ASP.NET MEMBERSHIP权限功能(二 )
扩展ASP.NET MEMBERSHIP权限功能(一 )