asp.net 基于forms验证的目录角色权限的实现
但是我在使用过程中,发现针对角色的控制并不是那么容易,通过在网上查找资料,终于解决这个问题。下面将主要的注意事项列出来。
1、配置文件中,角色的allow项要放在deny项的前面,users要配置为*,而不是?
<location path="Doctors">
<system.web>
<authorization>
<allow roles="doctors"/> //这个在前
<deny users="*"/>
</authorization>
</system.web>
</location>
2、将角色写入票据
string role="doctors";
FormsAuthenticationTicket Ticket = new FormsAuthenticationTicket(1, username, DateTime.Now, DateTime.Now.AddMinutes(30), false, role, "/");//建立身份验证票对象
string HashTicket = FormsAuthentication.Encrypt(Ticket);//加密序列化验证票为字符串
HttpCookie UserCookie = new HttpCookie(FormsAuthentication.FormsCookieName, HashTicket);
//生成Cookie
Response.Cookies.Add(UserCookie);//输出Cookie
Response.Redirect("");//重定向到用户申请的初始页面
3、身份票据并没有直接提供对role的直接支持,需要在Application_AuthenticateRequest中对role进行解析
string[] roles = authTicket.UserData.Split(new char[] { '|' });
FormsIdentity id = new FormsIdentity(authTicket);
System.Security.Principal.GenericPrincipal principal = new System.Security.Principal.GenericPrincipal(id, roles);
Context.User = principal;
大致弄清这三点,就可以了。
代码打包
相关推荐
-
实例说明asp.net中的简单角色权限控制
角色表+用户表,其中Hope_T_User(用户)中的User_RoleId关联Hope_T_Role(角色)的Role_Id,表中字段均为简单常见英文,不作详解. 主要思路是使用公共类在其中根据角色得出其越权时的操作,然后后台所有需要验证权限的页面均继承此类,使用相应参数判断角色以做相应操作. 公共类:AdminPermission 复制代码 代码如下: /// <summary> /// AdminPermission角色权限验证类 /// </summary> public
-
asp.net+sqlserver实现的简单高效的权限设计示例
大部分系统都有权限系统.一般来说,它能管控人员对某个否页面的访问:对某些字段.控件可见或者不可见.对gridview中的数据是否可删除.可添加.可新增等等.大部分人都把权限作为一个子系统独立出来.但是这里我不是想设计一个权限管理系统,网上的设计方案太多了,可以说每个开发人员都有自己的开发权限管理系统的想法和思路. 在这篇文章中,我先用简单的C#代码模仿一个用户的权限,再使用sql去模拟.这是一种很简单,很直观,很高效的方式去判定用户的权限. C#: 好吧,先从最简单开始,定义一个用户(User)
-
asp.net 权限管理分析
权限管理一般分为"用户管理""角色管理""权限管理".而其中的权限管理,主要是针对某一模块实现"添加""修改""删除"的针对性控制,比如某个用户有"添加文章"的权限,但没有"修改(审核)文章"的权限.以下我主要先讲下"权限管理". 首先,存进数据库的格式,看下: 复制代码 代码如下: news:3,gallery:1,users
-
ASP.NET通用权限验证的实现代码思路
本篇介绍通用权限验证的实现代码思路,总共分为导入参数.解析XML.根据XML配置进行处理.返回结果. 代码架构图 一. 类介绍 1.SFWebPermission:实现IHttpModule接口,权限验证入口: 2.SFConfig:导入XML配置类: 3.SFPermission:解析XML配置进行权限验证: 4.SFAccessOper:数据库操作类: 5.SFPermissionSQL:XML节点实体类: 6.SFParameter:XML节点实体类: 7.SFCommon:系统变量定义类
-
ASP.NET MVC 中实现基于角色的权限控制的处理方法
[Authorize]public ActionResult Index() 标记的方式,可以实现所标记的ACTION必须是认证用户才能访问: 通过使用 [Authorize(Users="username")] 的方式,可以实现所标记的ACTION必须是某个具体的用户才能访问,以上两种方式使用起来非常方便,在NeedDinner示例程序中已有具休的实现过程, 但是,我们在实际的应用中所使用的大都是基于角色(Roles)的认证方式,NeedDinner中却未给出,本文给出具体实现(基于
-
Asp.net Mvc 身份验证、异常处理、权限验证(拦截器)实现代码
1.用户登录 验证用户是否登录成功步骤直接忽略,用户登录成功后怎么保存当前用户登录信息(session,cookie),本文介绍的是身份验证(其实就是基于cookie)的,下面看看代码. 引入命名空间 using System.Web.Security; 复制代码 代码如下: Users ModelUser = new Users() { ID = 10000, Name = UserName, UserName = UserName, PassWord = PassWord, Roles =
-
获取创建Membership的数据库创建脚本
所以总想有自己的创建脚本,最后找到了如下的方法. aspnet_regsql.exe -E -S localhost -d Northwind -A all -sqlexportonly c:\membership.sql 对于asp.net_regsql.exe的操作可以参考如下链接: http://msdn.microsoft.com/zh-cn/library/ms229862(VS.80).aspx 参考原文如下: http://blog.krisvandermast.com/Creat
-
asp.net membership 密码重设
在web.config中: 复制代码 代码如下: <connectionStrings> <add name="SqlServices" connectionString="server=.;database=data;uid=sa;pwd=123;" /> </connectionStrings> 复制代码 代码如下: <membership defaultProvider="SqlProvider"
-
一个基于Asp.Net MVC的权限方案
1.数据结构Mad_Popedom为权限表,Control记录控制器名,Action记录动作名.Mad_Role为角色表. 2.权限控制的实现此处使用比较简单AOP方式,用MVC的Filter实现,代码如下 复制代码 代码如下: using System.Collections.Generic; using System.Web.Mvc; using Madnet.Model.MadAdmin; using Madnet.BLL.MadAdmin; namespace Madnet.Contro
-
asp.net Forms身份验证和基于角色的权限访问
主要思想:Forms身份验证用来判断是否合法用户,当用户合法后,再通过用户的角色决定能访问的页面. 具体步骤: 1.创建一个网站,结构如下: 网站根目录 Admin目录 ----> 管理员目录 Manager.aspx ----> 管理员可以访问的页面 Users目录 ----> 注册用户目录
-
初识 ASP.NET Membership 用户管理
一.与session的不同点 Membership 一般指用微软的aspnetdb数据库来进行身份认证 Session是指网站用户的会话信息 二.Membership 类提供的功能可用于: 1.创建新用户. 2.将成员资格信息(用户名.密码.电子邮件地址及支持数据)存储在 Microsoft SQL Server 或其他类似的数据存储区. 3.对访问网站的用户进行身份验证.可以以编程方式对用户进行身份验证,也可以使用 Login 控件创建一个只需很少代码或无需代码的完整的身份验证系统. 4.管理
-
asp.net BasePage类+Session通用用户登录权限控制
但是很多人都喜欢在 复制代码 代码如下: protected void Page_Load(object sender, EventArgs e) {} 里面来写代码,甚至在某些按钮里面写判断session是否存在~~ 这样当然是能实现效果的,问题就在,如果有1000个页面~~你需ctrl+C...Ctrl+V 很多次~~~ 我的思路就是写一个BasePage类继承 System.Web.UI.Page 复制代码 代码如下: public class BasePage : System.Web.
随机推荐
- 详解Java中多线程异常捕获Runnable的实现
- PHP基于回溯算法解决n皇后问题的方法示例
- MSSQL 字符段分段更新
- 非主流的另类图片
- iOS仿微博客户端一条微博的展示效果
- android计时器,时间计算器的实现方法
- Zend Framework教程之路由功能Zend_Controller_Router详解
- PHP脚本的10个技巧(8)
- 批量获取及验证HTTP代理的Python脚本
- C语言实现动态顺序表的实现代码
- Android中使用Camera类编写手机拍照App的实例教程
- php内嵌函数用法实例
- PHP小技巧搜集,每个PHPer都来露一手
- jQuery遍历节点方法汇总(推荐)
- 关于最近出现logo1_.exe基本介绍和清除技巧
- C语言中等待socket连接和对socket定位的方法
- ubuntu用 vmware 安装win10系统的教程(分享)
- Vue-Router基础学习笔记(小结)
- 易语言中Com对象和Office之间的交互使用方法
- python实现RabbitMQ的消息队列的示例代码