日期:2014-05-17 浏览次数:21261 次
几乎所有的系统中都会使用到访问控制和角色管理这样的功能,例如:新建、修改、删除用户和角色,为用户分配角色,管理角色中的用户等等。于是MS在 ASP.NET 2.0开始,实现了这些功能,使得我们在开发中,不需要考虑这方面的内容,把更多的精力投入到业务逻辑的开发中去。从而大大的提高了开发的效率。下面我们 就来学习一下如何使用membership。
要使用membership首先需要数据库的支持,所以我们第一步就是创建用来存放用户、角色等信息的表结构。别担心,MS早就把创建表的语句写好了,并且还提供了用户界面,让我们点点鼠标就可以创建好所需的结构了。
具体操作如下:进入C:\WINDOWS\Microsoft.NET\Framework\v2.0.xxxxx(vs2010
的目录是v4.0.xxxx)这个目录下,找到aspnet_regsql.exe直接双击运行,就会弹出一个界面,直接下一步。第二个界面让我们选择是
添加表结构还是移除,我们当然选择添加,继续下一步。在这个界面中需要填写服务器ip地址以及身份验证信息。在填写完毕后,就可以选择你要将表结构添加到
哪个数据库中了。需要注意的是:如果选择默认,则会创建一个新的名叫aspnetdb的数据库,然后将表结构加入其中。一路下一步就完成了数据库结构的添
加。
好了,表结构添加完毕,接下来就是需要在项目中进行一些简单的配置了。我们在vs中新建一个网站,随后再用记事本打开
C:\WINDOWS\Microsoft.NET\Framework\v2.0.xxxxx\CONFIG\machine.config这个文件,
找到system.web节点下的membership节点,将整个节点复制到我们新建网站的web.config中的system.web节点中。
?
复制过来的代码如下:
<membership> <providers> <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="LocalSqlServer" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" applicationName="/" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="1" passwordAttemptWindow="10" passwordStrengthRegularExpression=""/> </providers> </membership>
?下面是主要的几个属性的含义:
name :数据提供程序的名称,由于我们是从machine.config复制过来的,所以必须改名,防止重名
type :数据提供程序类型,如果使用的是MSSQL数据库,则保持不变即可,如果使用的是Oracle等其他数据库,则必须自己创建一个类来继承MembershipProvider 抽象基类,重写里边的所有抽象方法,然后把类型写在这里即可。
connectionStringName :该属性必须指定在<connectionStrings >节点中,一个连接字符串的名字。
applicationName :应用程序名 称,membership允许多个应用程序共同使用一个数据库来管理自己的用户、角色信息,各应用程序只需配置不同的applicationName即 可,当然,如果想要多个应用程序使用同一份用户角色信息,只需设置一样的applicationName即可。
requiresUniqueEmail :顾名思义,用户注册时,是否需要提供未注册过的邮箱。
passwordFormat
:密码存储格式,密码保存在数据库中的格式,最常用的有Clear
(不加密)和Hashed
(使用SHA1算法加密)
minRequiredPasswordLength
:最小密码长度。
minRequiredNonalphanumericCharacters :指定有效密码中必须包含的特殊字符的最小数量,就是说不是字母也不是数字的字符的数量,比如+-*/,.什么的,增加密码强度
?
好了,我们将配置修改一下并添加连接字符串:
<connectionStrings> <add name="ConnectionString" connectionString="server=.;uid=sa;pwd=sa;database=aspnetdb"/> </connectionStrings> <system.web> <membership defaultProvider="mySqlMembershipProvider"> <providers> <add name="mySqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="ConnectionString" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" applicationName="TestMembership" requiresUniqueEmail="true" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" passw