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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ASP.Net 4.5入门经典》是一本介绍ASP.Net 4.5的经典教程。ASP.Net是一种用于构建Web应用程序的开发框架,而ASP.Net 4.5是该框架的最新版本。本书通过详细解释ASP.Net 4.5的各个方面,提供了一个全面而系统的学习指南。 《ASP.Net 4.5入门经典》从基础概念出发,逐步带领读者了解ASP.Net的核心特性和功能。首先,书中介绍了ASP.Net的开发环境和配置,帮助读者搭建开发环境。接下来,书中详细讲解了ASP.Net的页面生命周期和事件模型,让读者了解页面的创建、加载、处理请求和响应等过程。此外,本书还介绍了ASP.Net的控件模型和数据绑定技术,让读者能够在页面上使用各种控件和绑定数据。 除了基础知识,本书还深入介绍了ASP.Net的高级功能和技术。比如,书中详细介绍了ASP.Net的安全机制,包括认证授权。此外,本书还介绍了ASP.Net的错误处理和调试技术,帮助读者解决在开发过程中遇到的各种问题。 《ASP.Net 4.5入门经典》的特点之一是丰富的示例代码和练习题。通过实际的案例和练习,读者可以更好地理解和应用所学知识。此外,本书还提供了在线资源和学习指南,帮助读者进一步巩固和拓展所学内容。 总体来说,《ASP.Net 4.5入门经典》适合有一定编程基础的读者学习ASP.Net。无论是新手还是有经验的开发人员,都能从这本书中获得ASP.Net开发的基本知识和技巧。无论是想开发网站,还是扩展现有网站的功能,本书都能为读者提供宝贵的指导。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值