asp.net 中用户和角色的验证

ASP.NET环境中基于角色的权限系统设计 在当今数字化时代,数据安全和权限管理成为了企业IT基础设施的核心部分。基于角色的访问控制(RBAC)是一种广泛使用的权限管理模型,它通过角色将权限授予用户,而不是直接分配给每个用户。这种方法不仅简化了权限管理流程,还增强了系统的可扩展性和安全性。用户控件(User Controls)是ASP.NET中用于封装可重用的界面片段的组件。它们允许开发者创建自定义的HTML标记、服务器端代码和客户端脚本的组合。 阅读详情
http://support.microsoft.com/default.aspx?scid=kb;zh-cn;306590

本文引用下面的 Microsoft .NET Framework 类库命名空间:
•System.Web.Security
•System.Web.Principal

请求的安全性事件流

以下步骤简要介绍了在客户端发出请求时发生的事件序列:
1.客户端请求 IIS 服务器上的一个 .aspx 页。
2.将客户端凭据传递给 IIS。
3.IIS 对客户端进行身份验证,然后将经过身份验证的标记随客户端请求一起传送到 ASP.NET 工作进程。
4.根据 IIS 传送的经过身份验证的标记以及 Web 应用程序的配置设置,ASP.NET 决定是否在处理请求的线程上模拟用户。Microsoft Active Server Pages (ASP) 和 ASP.NET 的明显区别是,ASP.NET 在默认情况下不再模拟经过身份验证的用户。若要启用模拟,必须在 Web.config 文件中将 identity 部分中的 impersonate 属性设置为 true。

相关配置设置

IIS 在 IIS 配置数据库中保存与安全性有关的配置设置。但是,ASP.NET 在可扩展标记语言 (XML) 配置文件中保存安全(及其他)配置设置。虽然从安全性的角度来看,这通常可简化应用程序的部署,但应用程序采用的安全模型要求通过其配置文件 (Web.config) 来正确配置 IIS 配置数据库和 ASP.NET 应用程序。

以下配置部分与 ASP.NET 安全性有关:
•<authentication> 部分
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/gngrfauthenticationsection.asp
•<authorization> 部分
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/gngrfauthorizationsection.asp
•<identity> 部分
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/gngrfidentitysection.asp
•<machineKey> 部分
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/gngrfmachinekeysection.asp

身份验证

身份验证是指以下过程:获取标识凭据(如用户名和密码),并对照某一颁发机构来验证这些凭据。

ASP.NET 提供了四个身份验证提供程序:
•表单身份验证
•Windows 身份验证
•Passport 身份验证
•默认身份验证
表单身份验证
表单身份验证是指以下系统:将未经身份验证的请求重定向到一个超文本标记语言 (HTML) 表单,使用户能够在其中键入他们的凭据。在用户提供凭据并提交该表单后,应用程序对请求进行身份验证,然后系统以 Cookie 的形式发出身份验证票证。此 Cookie 包含凭据或用于重新获取标识的密钥。浏览器的后续请求自动包含此 Cookie。

Windows 身份验证
在 Windows 身份验证中,IIS 执行身份验证,并将经过身份验证的标记传递给 ASP.NET 工作进程。使用 Windows 身份验证的优点是它需要的编码最少。在将请求传递给 ASP.NET 之前,您可能需要使用 Windows 身份验证来模拟 IIS 进行验证的 Windows 用户帐户。

Passport 身份验证
Passport 身份验证是 Microsoft 提供的集中式身份验证服务,它为成员站点提供单一登录和核心配置文件服务。通常,当您需要跨越多个域的单一登录功能时,将使用 Passport 身份验证。

默认身份验证
当 Web 应用程序不需要任何安全功能时,将使用默认身份验证;此安全提供程序需要匿名访问。在所有的身份验证提供程序中,默认身份验证为应用程序提供了最高的性能。当您使用自己的自定义安全模块时,也可以使用此身份验证提供程序。

授权

授权是指验证经身份验证的用户是否可以访问请求资源的过程。

ASP.NET 提供以下授权提供程序:
•FileAuthorization
•UrlAuthorization
FileAuthorization
FileAuthorizationModule 类进行文件授权,而且在使用 Windows 身份验证时处于活动状态。 FileAuthorizationModule 负责对 Windows 访问控制列表 (ACL) 进行检查,以确定用户是否应该拥有访问权限。
UrlAuthorization
UrlAuthorizationModule 类进行统一资源定位器 (URL) 授权,它基于 URI 命名空间来控制授权。URI 命名空间可能与 NTFS 权限使用的物理文件夹和文件路径存在很大的差异。

UrlAuthorizationModule 实现肯定和否定的授权断言;即,可以使用该模块有选择性地允许或拒绝访问用户、角色(如 manager、tester 和 administrator)和谓词(如 GET 和 POST)的 URI 命名空间的任意部分。

基于角色的安全性

ASP.NET 中基于角色的安全性类似于 Microsoft COM+ 和 Microsoft Transaction Server (MTS) 所使用的基于角色的安全性,不过它们之间也存在很大的差异。ASP.NET 中基于角色的安全性不仅限于 Windows 帐户和组。例如,如果启用 Windows 身份验证和模拟,用户的标识就是 Windows 标识 (User.Identity.Name = "Domain/username")。可以检查特定角色中成员的标识,并相应地限制其访问权限。例如:

		
Visual C# .NET 代码
if ( User.IsInRole("BUILTIN//Administrators"))
   Response.Write("You are an Admin");
else if (User.IsInRole("BUILTIN//Users"))
   Response.Write("You are a User");
else
   Response.Write("Invalid user");
				
如果使用的是表单身份验证,则不会为经过身份验证的用户分配角色;您必须以编程方式执行此任务。若要为经过身份验证的用户分配角色,请使用身份验证模块(本例中为表单身份验证模块)的 OnAuthenticate 事件创建新的 GenericPrincipal 对象,并为其分配 HttpContext 的 User 属性。以下代码对此进行了说明:

				
Visual C# .NET 代码
public void Application_AuthenticateRequest(Object s, EventArgs e)
{
   if (HttpContext.Current.User != null)
   {
      if (HttpContext.Current.User.Identity.AuthenticationType == "Forms" )
      {
         System.Web.Security.FormsIdentity id = HttpContext.Current.User.Identity;
         String[] myRoles = new String[3];
         myRoles[0]= "managers";
         myRoles[1]= "testers";
         myRoles[2]= "developers";
         HttpContext.Current.User = new System.Security.Principal.GenericPrincipal(id,myRoles);
      }
   }
}
				
若要检查用户是否属于特定的角色并相应地限制其访问权限,请在 .aspx 页中使用以下代码(或类似的代码):

				
Visual C# .NET 代码
if (User.IsInRole("managers"))
   Response.Write("You are a Manager");
else if (User.IsInRole("testers"))
   Response.Write("You are a Tester");
else if (User.IsInRole("developers"))
   Response.Write("You are a Developer");
C#实现ASP.NET多角色用户管理教程 htmltable {th, td {th {pre {简介:在ASP.NET框架中,实现多角色用户管理是构建大型Web应用程序的重要环节。该过程包括身份验证与授权、用户角色的创建与分配、用户登录状态的管理,以及根据角色进行页面权限控制。本教程将通过详细的步骤介绍如何使用C#语言结合ASP.NET框架来设计、构建并优化多角色用户管理系统,涵盖数据库设计、身份验证配置、角色服务注册、角色创建、用户注册及角色分配、页面访问授权、角色检查以及用户角色管理界面的创建。 阅读详情

相关推荐

Asp.net中的用户角色权限设计

Asp.net中的用户角色权限设计Asp.net中的用户角色权限设计

IIS与asp.net身份认证

在IIS中 设置应用程序的身份认证 相关选项有: 第一类,Forms身份验证和windows live id 验证(微软的单点登录服务) 第二类,基本身份认证,域服务器的摘要式身份认证,windows身份认证   关于模拟身份的相关选项有: IIS的身份认证中的 “asp.net模拟”  和 “应用程序池的标识” 另外模拟身份必须启用“匿名身份验证”   另外总结3点还有2个注意:...

weixin_34293902的博客 285

从零到一:手把手教你用C#开发AGV调度系统(附避坑指南)

本文详细介绍了如何使用C#开发高效的AGV调度系统,涵盖从环境搭建到核心算法实现的完整流程。重点解析了动态路径规划、多机协同等关键技术,并提供了实用的避坑指南和性能优化建议,帮助开发者快速构建工业级车辆控制调度系统。

blockchain9miner的博客 741

如何在 ASP.NET 应用程序中实现模拟用户身份(在ASP.NET中以管理员身份运行网站)...

前言 在实际的项目开发中,我们可能会需要调用一些非托管程序,而有些非托管程序需要有更高的身份权限才能正确执行。本文介绍了如何让IIS承载的ASP.NET网站以特定的账户执行,比如Administrator。 概要 本文介绍了在 ASP.NET 应用程序中实现模拟用户身份的不同方式。 更多信息 如果要在 ASP.NET 中的线程上模拟用户,可以根据您的要求使用以下方法之一: ...

weixin_30268071的博客 231

[Python]:热血传奇-Wzl,Wzx的解析

首先我们要了解,wzl与wzx的对应关系,wzx里面存的是每张二进制图片数据在wzl中的偏移量,所以取到wzx中的偏移数据就可以取到wzl每张图片数据,其实就这么简单。结构体为 [Byte][Byte][Byte][Byte][short][short][short][short][int]-读取44至48字节代表为,[wzx中偏移值总数量] [int类型] [4字节]-根据在wzx中取得的偏移值总数量,每张图片偏移值在wzl中取图片数据。2.[取wzl中图片偏据]:根据wzx中取得数据对[

qq_36138506的博客 3446

基于TDOA的chan算法(定位算法)

Chan算法原理 TDOA(TDOA,the time differences of arrival,到达时间差),Chan算法是TDOA定位方法的一个很好用的方法。 Chan算法是非递归双曲线方程组解法,具有解析表达式解,主要特点是:在测量误差服从理想高斯分布时,它的定位精度高、计算量小,并且可以通过增加已确定点的数量来提高算法精度。 该算法的推导前提是基于测量误差为零均值高斯随机变量,对于实际环境中误差较大的测量值,比如在有非视距误差的环境下,该算法的性能会有显著下降。二维情况下,可分为只有三个点参与定

优快云不再更新 2万+

细说ASP.NET Windows身份认证

转载: http://www.cnblogs.com/fish-li/archive/2012/05/07/2486840.html Forms身份认证虽然使用广泛,不过,如果是在 Windows Active Directory 的环境中使用ASP.NET,那么使用Windows身份认证也会比较方便。方便性表现为:我们不用再设计登录页面,不用编写登录验证逻辑。而且使用Windows身份认

wmqdn的专栏 710

FOC观测器之龙伯格观测器

状态观测器: 理论依据:根据控制理论,如果一个系统能够完全通过其检测到的输出值来重构其系统状态,则认为该系统是可观测的。其作用于无传感器转子的位置和速度的检测反馈,再作用到PARK逆变换和转矩磁链控制上。 Luenberger观察器原理图: Luenberger观测器的离散化: (其观测器的闭环参数为经验验证值) 引入估测电流( iα,iβ )的反馈值并离散化(T 为采样时间),可得...

ShawnChan的博客 2万+

Windows 2008 server + IIS 7 设置身份模拟(ASP.NET impersonation)

作者:eaglet 转载请注明出处 IIS7 与 IIS 6 相比有了很大的改动,原来在 IIS 6 下可以的设置到了 IIS 7 下有的会发生变化。身份模拟的配置上,IIS7 和 IIS6有很大不同,网上IIS6的身份模拟的文章比较多,但介绍IIS7的比较少,我把的一些折腾的经验在这篇博客中写下来,以供参考。   IIS 7 有两种 ASP.NET Application Mode。...

weixin_34051201的博客 197

NVIDIA DGX Spark 开发环境深度配置与优化指南

定期系统维护每月执行一次完整的系统更新监控存储空间使用情况,及时清理临时文件定期检查硬件健康状况开发习惯优化使用tmux或screen管理长时间运行的任务配置自动化测试和代码质量检查建立完善的项目文档体系性能调优周期每月重新评估和调整系统参数根据工作负载特点优化容器配置持续监控和记录性能指标DGX Spark作为一个强大的AI开发平台,其真正的价值需要通过精细的环境配置和优化才能充分发挥。本文提供的配置方案和建议均基于实际生产环境经验,旨在帮助开发者构建稳定、高效、可维护的开发环境。

time_days的博客 3684

巡检机器人的基于ROS系统的任务管理架构设计总结

本文探讨了基于ROS(机器人操作系统)的工业巡检机器人任务管理架构设计,提出分层闭环方案。架构围绕稳、准、活、扩四大目标,分为感知层(多源数据融合)、调度层(智能决策)、执行层(动作控制)和数据层(存储交互)。关键技术包括ROS2实时性优化、功能包复用和多机器人协同调度。实践案例显示,该架构在电力巡检中使任务完成率达99%,在化工园区实现95%覆盖率。当前挑战包括SLAM地图漂移和多机通信延迟,未来可通过语义SLAM和区域通信优化。

start_up_go的博客 466

asp.net 的应用程序身份和模拟

<br />  identity 收藏 <br /> ============================================================<br />using System;<br />using System.Runtime.InteropServices;<br />using System.Security.Principal;<br />using System.Security.Permissions;<br />using System.Windows.Fo

winter_leaf_wei的专栏 856

Dify 第 2 篇 Dify 插件离线安装

Dify是一个支持插件扩展的AI平台,其插件市场提供5种类型插件(模型、工具、Agent策略、扩展、插件包)。由于默认pip安装速度慢,可通过dify-plugin-repackaging工具将插件转换为离线包(使用阿里云镜像加速)。该工具提供两种方式:1)自备Python环境执行脚本;2)使用Docker环境(推荐)。脚本支持从Dify市场或GitHub下载插件,并重新打包为含依赖的离线包,便于通过"本地插件"方式快速安装。

甘蓝的专栏 1261

asp.net mvc 登陆及用户角色验证

使用asp.net mvc 实现登陆及角色验证。 我最进想要实现对网站登陆者的权限管理问题,不同角色的用户访问页面收到权限的限制。然而因为建立的是空项目,所以只能手动实现角色管理的功能。 基本的思想就是重载AuthorizeAttribute特性标签,让重载的类继承ActioFilterAttribute类来实现个性的角色验证标签。 而登陆controller的书写主要就是从数据库中查...

weixin_30484247的博客 344

yolov8 转华为昇腾om脚本

yolov8 转华为昇腾om脚本

jacke121的专栏 1601

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

ASP.NET中用户验证及角色管理

在VS 2003中:1、以用户名为条件将用户所属的角色从数据库中查询出来,方法为自己写SQL语句。2、生成用户验证票据,将用户角色加入票据,如下面的result就为用户角色字符串,FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(     1,      // Ticket version     usrn

RedstoneHe的专栏 1628

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Asp.net(C#)中基于Forms验证的角色(用户组)验证授权过程

本文已经假设你了解Forms验证的一般知识. Asp.net中基于Forms验证的角色(用户组)验证授权,其实就是在一般的Forms验证上边加多一个名为UserDate的string内容, 大家可以分三步完成验证: 1,设置web.config <configuration> <system.web> <!--enableFormsa...

weixin_30530939的博客 214

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

ASP.NET MVC5+MySql使用ASP.NET 身份验证实现用户和角色功能 1 概述 目标:使用MySql数据库,建立一个使用ASP.NET 身份验证的应用,并实现角色功能,身份

ASP.NET MVC5+MySql使用ASP.NET 身份验证实现用户和角色功能     1    概述 目标:使用MySql数据库,建立一个使用ASP.NET 身份验证的应用,并实现角色功能,身份验证及角色的数据库为原有的MySql数据库,并用EF Code First实现迁移。 材料:Visual Studio 2015 ,MySql 5.6.33,Conn

Derek's Blog 1081

[转载]Asp.net(C#)中基于Forms验证的角色(用户组)验证授权过程

本文已经假设你了解Forms验证的一般知识. Asp.net中基于Forms验证的角色(用户组)验证授权,其实就是在一般的Forms验证上边加多一个名为UserDate的string内容, 大家可以分三步完成验证: 1,设置web.config <configuration> <system.web> <!--...

weixin_30684743的博客 87

asp.net mvc3.0通过窗体进行用户的验证(基于角色)

一、首先在web.config文件中进行窗体验证的配置如下:            这样的配置,表示,如果在某个action上面使用了Authorize的属性设置,而刚好用户没有进行登录,那么页面就会导向登录的界面进行登录。 二、建立用户信息类如下:  public class User     {         public int ID { get; se

jinzhu1600的专栏 718

ASP.NET面向角色授权之:自定义Forms用户验证与授权

一、配置config n  基本内容 //配置身份验证的加密解密和验证级别。   还可以配置某个目录的权限à     二、填写与匹配帐户信息 //从数据库或文件取得填写的帐户信息 If(Dr.Read) //如果存在集合中 { //则用户验证通过。 { //方式四:创建自定义身份验证票  Form

lixuezhi的专栏 786

利用ASP.NET框架创建网站登陆

1、关于登陆验证和授权    很多网站都有登陆对话框,让事先已经注册的用户验证,以便为他们提供个性化的服务等。可以把这个过程看作是两件事情的发生:验证和授权!登陆的作用是验证请求登陆的用户是否合法,而授权则是验证合法的用户在请求资源时,根据他们的权限决定是访问还是拒绝。    以上这种网站本身提供对话框的作法在.NET中被称之为Forms验证模式,接下来将会讲述这种验证模式。在以前ASP陈序员或者

zsybob的专栏 2294

Asp.net中基于Forms验证的角色验证授权

Asp.net的身份验证有有三种,分别是"Windows | Forms | Passport",其中又以Forms验证用的最多,也最灵活。   Forms 验证方式对基于用户的验证授权提供了很好的支持,可以通过一个登录页面验证用户的身份,将此用户的身份发回到客户端的Cookie,之后此用户再访问这个web应用就会连同这个身份Cookie一起发送到服务端。服务端上的授权设置就可以根据不同目录

GoodShot的专栏 2965

在asp.net使用web.config身份验证

asp.net中使用基于角色的身份Forms验证,大致分为四个步骤 1.配置系统文件web.config <system.web> <authentication mode="Forms" > <forms name=".yaoCookies" loginUrl="/duan/Manage/login.aspx" protection="All" ...

weixin_33840661的博客 467
上一篇: DataRow的状态
下一篇: 计算机术语
HowcanIdo
博客等级 码龄25年 1粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值