`
csstome
  • 浏览: 1521294 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Asp.Net认证和授权扩展

 
阅读更多

原来的Membership

我们知道在Asp.Net 2.0中微软就为我们提供了强大的权限管理功能来帮助我们管理Asp.Net相应的权限,其实它是对我们的身份认证和权限管理的一种抽象。这里简单的了解一下Membership:

我们应该知道微软关于认证方面给我们提供了三种认证方式windows 、Forms、Passport,我想熟悉Asp.Net的用户都知道我们使用Forms认证应该是最多的。但是应该指出的就是这些只是身份认证方面的,和Membership成员管理是分开的而不是我们要用Forms认证就必须使用Membership。例如假设我们的站点只牵扯到用户的登录而不需要进行相应的角色划分以及使用Membership创建用户等方法的话就完全只使用Forms认证就可以了(像只使用Forms认证的情况,我们用户注册,用户身份认证就必须我们自己来做了。我们可以建立用户表,注册的时候只需要写相应的用户信息到表中,登录的时候读取数据库中相应的信息做匹配,如果正确就执行FormsAuthentication.SetAuthCookie(UserName, false)就可以了)。这时我们所有的用户信息管理都是自己来做的,当然灵活性很高了,我们仅仅用到Forms认证的基本功能(像没有登录自动回到登录页面、登录之后可以在其他任何位置得到用户相关信息等)。但是如果用户认为自己管理这些信息比较麻烦,而且有时候我需要用到角色管理的话我们就不得不提到Membership了,有了它整个身份认证和权限管理就很容易了。这里说一下它的本质,Membership之所以让用户那么随心所欲的操作而不需写很多的代码是因为它本省做了大量的封装,很多人不明白用户信息存储在什么地方,其实它是存储到了ASPNETDB.mdf这个数据库中。这时初学者就疑问这个数据库我没有建立啊,而且我在创建工程的时候也没看到这个数据库啊,况且数据库连接字符串在什么地方啊?这个数据库是系统自动建立的,是自动附加的,当使用Membership类时自动创建放在App_Data文件夹的,系统刚开始创建时由于系统不知道是否使用Membership所以肯定当时没有创建,而且数据库连接字符串是必须的肯定有的,它在Machine.config中,这个文件具体作用我想大家应该看看asp.net运行机制就知道了,它是优先于web.config的一个配置文件。Membership提供了创建用户、得到用户、删除用户、验证用户等一系列的功能,而且与Role紧密结合管理用户角色。除此之外微软还提供了相应的控件使用户更加容易的使用Membership。

Membership扩展

Membership那么好,我们都用它不就行了吗?首先应该说明的是它确实好用,但是我们知道封装越多灵活性就越低。在Membership中我们不用管它的数据库,只管使用就可以了。但是例如原来的用户信息比较少,我现在想给用户添加一个熟悉就是用户QQ怎么办(这个问题可以用profile解决,但是它确实灵活性)?如果我感觉不想在我的系统中用aspnetdb数据库怎么办?还有很多和具体使用有关的问题都可能出现。或许有些人就想开始自己写权限管理功能了,但是一个权限管理不是很快就写的很完善的。怎么办?我们不妨继续使用Membership而将这个数据库中的表放在自己的数据库中,如果有需要我们扩展这些表。

好了,我们开始做吧。首先就是aspnetdb这个数据库有几张表,而且其中存在着存储过程之类的东西我们怎么移植到我们自己的数据库中?这个问题其实很容易解决,微软给我们提供了一个小工具aspnet_regsql.exe(在windows中.net framework 中可以找到)来帮助我们复制表结构到我们已有数据库,我们双击即可运行,按照向导去做就可以了。我们完成之后发现我们的数据库中确实多了很多表,这些表结构和aspnetdb是完全一样的。第二个问题又出现了,我们如何让asp.net应用程序使用我们自己的表而不是使用原来的aspnetdb呢?我们可以通过连接字符串就可以了,关键就是machine.config中也有相应的字符串,这时我们可以通过clear清楚原来的字符串然后让系统使用我们自己的字符串。

我们看一下配置文件部分信息:

我们可以看我首先配置自己的连接字符串,和一般字符串没有任何区别(如果非要说有区别就是我字符串中的数据库包含和aspnetdb数据库一样的表),然后我再provider中先清除原来的字符串,然后配置自己的(主要在这里指明用的连接字符串,而且我还配置了一些其他信息像minRequiredNonalphanumericCharacters=0就允许密码可以不输入特殊字符等)。再者就是location中指明任何人都可以访问CreateUser.aspx页面(它是创建用户的页面允许没有注册信息的用户注册)。然后,我正常使用Membership创建一个用户,可看到我的数据库MembershipExtend中确实有相应的信息存在。

现在我又有了第二个问题,就是原来的用户信息列不够用,例如我的系统是一个MIS,其中包含员工信息,而我需要每个用户都是Employee,所以想在Users表中加入两列EmployeeID和EmployeeName,该怎么办呢?

我在数据库中重新建立一张表叫aspnet_UserInfo(ID,UserName,EmployeeID,EmployeeName),然后建立了aspnet_UserInfo 、aspnet_Users和aspnet_Membership三表之间的视图(之所以还有aspnet_Membership是因为user的一部分信息在这里面)叫vw_aspnet_UserAllInfo。这样一来创建用户的时候我们除了调用Membership的CreateUser方法外只需要在按照自己的操作在aspnet_UserInfo充插入相关信息就可以了。得到用户信息的话我们可以通过上面建立的视图就可以轻松得到了。

当然了,除了上面的功能我们的Membership还可以结合Role类进行角色管理,这点请放心我们的扩展之后对于成员管理只需要进行正常操作既可以了,我们在扩展时完全没有问题的。

好了,为了大家更清楚我们将源代码提供给大家下载:MembershipExtend

分享到:
评论

相关推荐

    ASP.NET MVC5认证授权实例

    在这个实例中,我们将探讨的是如何在ASP.NET MVC5中实现认证和授权,这是Web开发中的关键安全环节。 认证是识别用户身份的过程,而在ASP.NET MVC5中,我们可以使用内置的身份验证系统,它支持多种认证模式,如Forms...

    ASP.NET:定制和扩展

    5. ** Membership 和 Role Provider**:ASP.NET的认证和授权系统可以通过定制Membership Provider和Role Provider,以适应各种身份验证和权限管理需求,如集成企业AD域或者自定义数据库存储用户信息。 接下来,我们...

    使用ASP.NET技术开发网上书店(ASP.NET)

    网上书店可能包含会员系统,这就需要ASP.NET的身份验证和授权服务。Forms Authentication可以实现基于表单的登录,Role Management则用于管理不同用户的权限。 6. **状态管理**: ASP.NET提供了多种状态管理机制...

    asp.net core 6 api简单授权认证

    ASP.NET Core 6 API 简单授权认证是构建...通过阅读和理解这些代码,你可以更好地掌握ASP.NET Core 6 API授权认证的具体实现。此外,还可以查阅官方文档和社区资源,进一步学习如何根据实际需求定制和扩展授权机制。

    asp.net MVC4 CMS

    ASP.NET MVC4 CMS可能使用ASP.NET Identity进行用户认证和授权。这包括注册、登录、密码重置等功能,并且可以集成OAuth、OpenID Connect等外部身份验证服务。 **模块化和插件架构**: 为了保持系统的可扩展性,CMS...

    asp.net网上银行系统

    3. 用户认证和授权:掌握ASP.NET的身份验证模型,如Forms Authentication,以及角色管理,确保只有合法用户才能访问特定功能。 4. 状态管理:理解视图状态(ViewState)、会话(Session)、Cookie等机制在保持用户...

    21天学会asp.net

    8. **用户认证和授权**:学习ASP.NET的身份验证和授权机制,如Forms Authentication和角色管理,以实现用户登录、权限控制等功能。 9. **Ajax技术**:理解并运用jQuery和ASP.NET AJAX,提升Web应用的用户体验,实现...

    ASP.NET Core学习之使用JWT认证授权详解

    , 在以前PC的时代 , 通常是基于cookies-session这样的方式实现认证授权 , 在那个时候通常系统的用户量都不会很大, 所以这种方式也一直很好运行, 随着现在都软件用户量越来越大, 系统架构也从以前垂直扩展(增加服务器...

    【ASP.NET编程知识】ASP.NET Core学习之使用JWT认证授权详解.docx

    ASP.NET Core 使用 JWT 认证授权详解 在 ASP.NET Core 中,使用 JWT(JSON Web Token)认证授权是一种常见的身份验证方式。本文将详细介绍 JWT 的优势和劣势,以及在 ASP.NET Core 中如何集成 JWT 认证。 认证和...

    基于ASP.NET MVC项目实例

    本项目实例需要Visual Studio 2010或更高版本来运行,这是一个集成开发环境(IDE),提供了编写、调试和部署ASP.NET MVC应用程序所需的所有工具。 **4. 学习路线** 为了理解这个基于ASP.NET MVC的项目,你可以按照...

    asp.net投票系统

    5. **安全性**:ASP.NET 提供的身份验证和授权机制确保只有合法用户能参与投票,并防止恶意攻击。 ### 二、数据库设计 1. **投票表**:存储投票主题和选项,包括投票ID、标题、开始和结束时间、是否启用等字段。 ...

    ASP.NET资产管理系统源码.zip

    5. **身份验证与授权**:系统可能包含登录注册功能,使用ASP.NET的身份认证和授权机制,确保只有授权用户可以访问特定资源。 6. **错误处理与日志记录**:良好的错误处理和日志记录是任何系统的关键部分。源码可能...

    Asp.net考勤系统源码

    1. 用户认证模块:实现员工账号的注册、登录、权限控制等功能,可能使用ASP.NET的身份验证和授权机制。 2. 数据访问层(DAL):与数据库进行交互,执行CRUD(创建、读取、更新、删除)操作,可能使用ADO.NET或Entity...

    基于ASP.NET留言板系统

    【基于ASP.NET留言板系统】是一个使用微软的ASP.NET技术开发的互动平台,旨在提供一个简单但功能齐全的在线沟通环境。...这个项目对于学习和实践ASP.NET开发是一个很好的起点,同时也为实际的网站功能扩展提供了基础。

    ASP.NET从入门到精通第5版TM.rar

    4. **统一的身份认证和授权**:ASP.NET Identity系统提供了强大的用户管理和认证功能,支持多种身份验证机制,如OAuth、OpenID Connect等,确保了网站的安全性。 5. **依赖注入(DI)和控制反转(IoC)**:ASP.NET...

    使用ASP.NET实现2天快速开发电子商务平台的教学视频

    ASP.NET提供了内置的身份验证和授权机制,如Forms Authentication和Role-Based Authorization,可以方便地实现用户注册、登录、权限控制等功能。 6. MVC架构:MVC模式是一种流行的软件设计模式,用于分离应用程序的...

    asp.net会议管理系统

    综上所述,ASP.NET会议管理系统是一个综合运用了ASP.NET框架、数据库操作、用户认证、权限控制、UI设计、文件管理和报表生成等多个技术领域的应用,旨在为会议组织者提供一个全面、易用的管理工具。

    ASP.NET+SQL动态网站开发案例源代码精选

    ASP.NET提供了内置的身份验证和授权机制,如Forms Authentication和Role-Based Authorization,可用于控制用户访问权限,确保网站安全。 6. 状态管理 ASP.NET提供了多种状态管理方式,包括View State、Session ...

    Wrox Asp.Net 2.0 Instant Results(asp.net2.0经典案例教程)

    在ASP.NET 2.0中,微软引入了一系列增强功能,如控件生命周期的改进、数据绑定模型的扩展、母版页(Master Pages)和站点导航等,极大地提高了开发效率和代码复用性。书中将深入探讨这些关键特性,并通过实际项目来...

Global site tag (gtag.js) - Google Analytics