今天主要讲一下对于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

ASP.NET MVC 和 WebForm的权限控制的更多相关文章

  1. ASP.NET MVC使用过滤器进行权限控制

    1.新建MVC项目 2.找到Models文件夹,新建 LoginCheckFilterAttribute 类 public class LoginCheckFilterAttribute : Acti ...

  2. ASP.NET MVC与WebForm区别

    [转贴一] 使用ASP.NET MVC框架,创建默认项目,第一直观感觉就是地址都是Rewrite过的.对源码和配置文件稍加分析不难看出,MVC使用了httpModules来拦截地址请求,具体用到了Sy ...

  3. ASP.NET MVC 基于角色的权限控制系统的示例教程

    上一次在 .NET MVC 用户权限管理示例教程中讲解了ASP.NET MVC 通过AuthorizeAttribute类的OnAuthorization方法讲解了粗粒度控制权限的方法,接下来讲解基于 ...

  4. (读书笔记)Asp.net Mvc 与WebForm 混合开发

    根据项目实际需求,有时候会想在项目中实现Asp.net Mvc与Webform 混合开发,比如前台框架用MVC,后台框架用WebForm.其实要是实现也很简单,如下: (1)在MVC 中使用Webfo ...

  5. ASP.NET MVC显示WebForm网页或UserControl控件

    ASP.NET MVC显示WebForm网页或UserControl控件 学习与使用ASP.NET MVC这样久,还是对asp.net念念不忘.能否在asp.net mvc去显示aspx或是user ...

  6. Asp.net Mvc 与WebForm 混合开发

      根据项目实际需求,有时候会想在项目中实现Asp.net Mvc与Webform 混合开发,比如前台框架用MVC,后台框架用WebForm.其实要是实现也很简单,如下: (1)在MVC 中使用Web ...

  7. [转]Asp.net Mvc 与WebForm 混合开发

    本文转自:https://www.cnblogs.com/dooom/archive/2010/10/17/1853820.html 根据项目实际需求,有时候会想在项目中实现Asp.net Mvc与W ...

  8. ASP.NET MVC WebApi 返回数据类型序列化控制(json,xml) 用javascript在客户端删除某一个cookie键值对 input点击链接另一个页面,各种操作。 C# 往线程里传参数的方法总结 TCP/IP 协议 用C#+Selenium+ChromeDriver 生成我的咕咚跑步路线地图 (转)值得学习百度开源70+项目

    ASP.NET MVC WebApi 返回数据类型序列化控制(json,xml)   我们都知道在使用WebApi的时候Controller会自动将Action的返回值自动进行各种序列化处理(序列化为 ...

  9. FineAdmin.Mvc 使用ok-admin+ASP.NET MVC搭建的通用权限后台管理系统

    FineAdmin.Mvc 介绍 使用ok-admin+ASP.NET MVC搭建的通用权限后台管理系统RightControl后台layui模板不太好看,换成ok-admin v2.0重写一遍.项目 ...

随机推荐

  1. Arcgis for javascript map操作addLayer详解

    本节的内容很简单,说说Arcgis for Javascript里面map对象的addLayer方法.在for JS的API中,addLayer方法有两种,如下图: addLayer方法 在addLa ...

  2. Spring Boot下如何自定义Repository中的DAO方法

    环境配置介绍 jdk 1.8, Spring Boot 1.5.3.RELEASE, Mysql, Spring Data, JPA 问题描述 Spring Data提供了一套简单易用的DAO层抽象与 ...

  3. Oracle新用户以及授权的若干问题

    Database 实验4 问题: 授权语句 grant create table to user_name; 收回授权语句 revoke create table from user_name; 注意 ...

  4. linux之管道

    1. 进程间通信概述 进程是一个独立的资源分配单元,不同进程之间的资源是独立的,没有关联,不能在一个进程中直接访问另一个进程的资源.进程不是孤立的,不同的进程需要进行信息的交互和状态的传递等,因此需要 ...

  5. Python之json文件

    { "people":[ { "firstName": "Brett", "lastName":"McLaug ...

  6. webstorm-前端javascript开发神器中文教程和技巧分享(转)

    webstorm是一款前端javascript开发编辑的神器,此文介绍webstorm的中文教程和技巧分享. webstorm8.0.3中文汉化版下载:百度网盘下载:http://pan.baidu. ...

  7. sourcetree 分支的创建合并

    sourcetree 分支的创建合并,提交 https://blog.csdn.net/qq_34975710/article/details/74469068 sourcetree测试版本的配置忽略 ...

  8. php写入、追加写入文件的实例

    $myfile = fopen("newfile.txt", "w") or die("Unable to open file!"); $t ...

  9. MonGoDB问题笔记

    1. 最近出了一个问题,就是按日期查查不出来数据,经过折腾后发现,mongodb中的存储数据的日期格式与查询时使用的日期格式不匹配,导致查询出不来 //{"$and":[{ &qu ...

  10. SQL万能密码:' or 1='1

    select name,pass from tbAdmin where name='admin' and pass='123456' 输入用户名:' or 1='1 SQL变成下面这个样子: sele ...