今天主要讲一下对于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. pg确定一张表最后被使用的时间

    create or replace function table_file_access_info( IN schemaname text,IN tablename text,OUT last_acc ...

  2. 基于Photon 的 PUN+ 如何自动实现RPC呼叫的.

    基于Photon 的 PUN+ 如何自动实现RPC呼叫的. 简单说函数标记成 RPC 类型的. void Hello() { Debug.Log("Hello"); PhotonV ...

  3. HDU - 6166:Senior Pan(顶点集合最短路&二进制分组)

    Senior Pan fails in his discrete math exam again. So he asks Master ZKC to give him graph theory pro ...

  4. [BZOJ5133][CodePlus2017年12月]白金元首与独舞

    bzoj luogu 题意 给你一个\(n*m\)的网格,每个位置上有一个箭头指向上或下或左或右.有些位置上还没有箭头,现在要求你在这些没有箭头的位置上填入箭头,使得从网格的任意一个位置开始,都可以沿 ...

  5. Multisim的电路分析方法

    Multisim的电路分析方法:主要有直流工作点分析,交流分析,瞬态分析,傅里叶分析,噪声分析,失真分析,直流扫描分析, 灵敏度分析,参数扫描分析,温度扫描分析,零一极点分析,传递函数分析,最坏情况分 ...

  6. rac ASM下最简单归档开启/关闭方法

    原创作品,出自 “深蓝的blog” 博客,深蓝的blog:http://blog.csdn.net/huangyanlong/article/details/47172639本次先来介绍一下在rac环 ...

  7. Linux 简单字符设备驱动

    1.hello_drv.c (1) 初始化和卸载函数的格式是固定的,函数名自定义 (2) printk是内核的打印函数,用法与printf一致 (3) MODULE_LICENSE:模块代码支持开源协 ...

  8. PHP echo汉字出现乱码的情况之一

    当然首先要理清楚到底是web服务端造成,php造成的,还是数据库造成的. 需要在头文件里UTF-8 <head> <meta http-equiv="Content-Typ ...

  9. Maven入门----介绍及环境搭建(一)

    知识点: 介绍Maven 本机搭建Maven环境 DEMO测试 本地仓库迁出 Maven简介: 百度百科: 说到底就是一个项目管理工具. 本机搭建Maven环境: Maven的环境需要jdk环境的支持 ...

  10. java数组求输入平均值

    真是学了后面忘了前面,一维数组都忘了 package com.c2; //总结类型转换不对,导致运行报错 //以及没有new,导致空指针异常 //引入流. import java.io.*; publ ...