ASP.NET身份验证机制membership入门——配置篇(1)

http://www.cnblogs.com/xlb2000/archive/2010/05/10/1729076.html

1.添加数据库支持

    要使用membership首先需要数据库的支持,所以我们第一步就是创建用来存放用户、角色等信息的表结构。别担心,MS早就把创建表的语句写好了,并且还提供了用户界面,让我们点点鼠标就可以创建好所需的结构了。

    具体操作如下:进入C:\WINDOWS\Microsoft.NET\Framework\v2.0.xxxxx(vs2010
的目录是v4.0.xxxx)这个目录下,找到aspnet_regsql.exe直接双击运行,就会弹出一个界面,直接下一步。第二个界面让我们选择是
添加表结构还是移除,我们当然选择添加,继续下一步。在这个界面中需要填写服务器ip地址以及身份验证信息。在填写完毕后,就可以选择你要将表结构添加到
哪个数据库中了。需要注意的是:如果选择默认,则会创建一个新的名叫aspnetdb的数据库,然后将表结构加入其中。一路下一步就完成了数据库结构的添
加。

2.web.config配置

    好了,表结构添加完毕,接下来就是需要在项目中进行一些简单的配置了。我们在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=""
minRequiredPasswordLength=""
minRequiredNonalphanumericCharacters=""
passwordAttemptWindow=""
passwordStrengthRegularExpression=""/>
</providers>
</membership>
</system.web>

上面用黄色高亮字体标注出来的属性,是为了告诉membership采用我们刚才添加的mySqlMembershipProvider这个配置,因为machine.config中有一个AspNetSqlMembershipProvider,我们又在web.config中又添加了一个mySqlMembershipProvider,现在有了两个配置,所以应该使用defaultProvider属性指明本网站使用哪个配置。随后又指定了连接字符串配置的名称,一个Email不允许重复注册,最小密码长度为6,不限制密码中必须含有标点符号等配置。

3.ASP.NET身份验证配置

    membership算是配置到这里了,但是还没有结束,我们还需要把ASP.NET的身份验证机制配置为Forms身份验证。

 补充内容:

  ASP.NET一共有三种身份验证方式,分别为:

    1. Forms验证
    2. Windows验证
    3. Passport验证

    Windows验证是一种把能够访问到IIS的用户认为是已经通过身份验证的用户。可以通过windows自带的身份验证策略来控制哪些页面用户可以访问,哪些不能访问。这是一种最简单的方式,基本不用写多少代码,全部通过配置就可以实现访问的控制。

    Passport验证是由微软提供身份验证服务。当然这是收费的。

    Forms验证就是在用户登录时,向浏览器中添加一个cookie,然后在用户每次访问时都检测这个cookie,从而达到身份验证的目的。

    配置Forms身份验证其实就是把下面代码复制到web.config中去就可以了:

<system.web>
<authentication mode="Forms">
<forms loginUrl="Login.aspx"
protection="All"
timeout=""
name=".ASPXAUTH"
path="/"
slidingExpiration="true"
defaultUrl="default.aspx"
cookieless="UseDeviceProfile"/>
</authentication>
</system.web>
  • loginUrl 指向应用程序的自定义登录页。应该将登录页放在需要安全套接字层 (SSL) 的文件夹中。这有助于确保凭据从浏览器传到 Web 服务器时的完整性。

  • protection 设置为 All,以指定窗体身份验证票的保密性和完整性。这导致使用 machineKey 元素上指定的算法对身份验证票证进行加密,并且使用同样是 machineKey 元素上指定的哈希算法进行签名。

  • timeout 用于指定窗体身份验证会话的有限生存期。默认值为 30 分钟。如果颁发持久的窗体身份验证 Cookie,timeout 属性还用于设置持久 Cookie 的生存期。

  • namepath 设置为应用程序的配置文件中定义的值。

  • requireSSL 设置为 false。该配置意味着身份验证 Cookie 可通过未经 SSL 加密的信道进行传输。如果担心会话窃取,应考虑将 requireSSL 设置为 true

  • slidingExpiration 设置为 true 以执行变化的会话生存期。这意味着只要用户在站点上处于活动状态,会话超时就会定期重置。

  • defaultUrl 设置为应用程序的 Default.aspx 页。

  • cookieless 设置为 UseDeviceProfile,以指定应用程序对所有支持 Cookie 的浏览器都使用 Cookie。如果不支持 Cookie 的浏览器访问该站点,窗体身份验证在 URL 上打包身份验证票。

  • enableCrossAppRedirects 设置为 false,以指明窗体身份验证不支持自动处理在应用程序之间传递的查询字符串上的票证以及作为某个窗体 POST 的一部分传递的票证。

    需要说明一下的是LoginUrl和DefaultUrl属性:LoginUrl指向登录页面,当ASP.NET判断出该用户请求的资源不允许匿名访问,而该用户未登录时,ASP.NET会自动跳转到LoginUrl所指向的页面,当登录成功后,则跳转回原来请求的页面。DefaultUrl指向默认页面。当我们直接访问登录页面,并登录成功后,这时ASP.NET会跳转到DefaultUrl指向的页面。其他的选项不写都可以,因为有默认值。

asp.net mvc3+EF4.1项目实战的更多相关文章

  1. Asp.Net Core 2.0 项目实战(10) 基于cookie登录授权认证并实现前台会员、后台管理员同时登录

    1.登录的实现 登录功能实现起来有哪些常用的方式,大家首先想到的肯定是cookie或session或cookie+session,当然还有其他模式,今天主要探讨一下在Asp.net core 2.0下 ...

  2. Asp.Net Core 2.0 项目实战(11) 基于OnActionExecuting全局过滤器,页面操作权限过滤控制到按钮级

    1.权限管理 权限管理的基本定义:百度百科. 基于<Asp.Net Core 2.0 项目实战(10) 基于cookie登录授权认证并实现前台会员.后台管理员同时登录>我们做过了登录认证, ...

  3. Asp.Net Core 2.0 项目实战(9) 日志记录,基于Nlog或Microsoft.Extensions.Logging的实现及调用实例

    本文目录 1. Net下日志记录 2. NLog的使用     2.1 添加nuget引用NLog.Web.AspNetCore     2.2 配置文件设置     2.3 依赖配置及调用     ...

  4. Asp.Net Core 2.0 项目实战(8)Core下缓存操作、序列化操作、JSON操作等Helper集合类

    本文目录 1.  前沿 2.CacheHelper基于Microsoft.Extensions.Caching.Memory封装 3.XmlHelper快速操作xml文档 4.Serializatio ...

  5. Asp.Net Core 2.0 项目实战(7)MD5加密、AES&DES对称加解密

    本文目录 1. 摘要 2. MD5加密封装 3. AES的加密.解密 4. DES加密/解密 5. 总结 1.  摘要 C#中常用的一些加密和解密方案,如:md5加密.RSA加密与解密和DES加密等, ...

  6. Asp.Net Core 2.0 项目实战(6)Redis配置、封装帮助类RedisHelper及使用实例

    本文目录 1. 摘要 2. Redis配置 3. RedisHelper 4.使用实例 5. 总结 1.  摘要 由于內存存取速度远高于磁盘读取的特性,为了程序效率提高性能,通常会把常用的不常变动的数 ...

  7. Asp.Net Core 2.0 项目实战(4)ADO.NET操作数据库封装、 EF Core操作及实例

    Asp.Net Core 2.0 项目实战(1) NCMVC开源下载了 Asp.Net Core 2.0 项目实战(2)NCMVC一个基于Net Core2.0搭建的角色权限管理开发框架 Asp.Ne ...

  8. Asp.Net Core 2.0 项目实战(1) NCMVC开源下载了

    Asp.Net Core 2.0 项目实战(1) NCMVC开源下载了 Asp.Net Core 2.0 项目实战(2)NCMVC一个基于Net Core2.0搭建的角色权限管理开发框架 Asp.Ne ...

  9. Asp.Net Core 2.0 项目实战(2)NCMVC一个基于Net Core2.0搭建的角色权限管理开发框架

    Asp.Net Core 2.0 项目实战(1) NCMVC开源下载了 Asp.Net Core 2.0 项目实战(2)NCMVC一个基于Net Core2.0搭建的角色权限管理开发框架 Asp.Ne ...

随机推荐

  1. html5 css3 如何绘制扇形任意角度

    扇形制作原理,底部一个纯色原形,里面2个相同颜色的半圆,可以是白色,内部半圆按一定角度变化,就可以产生出扇形效果 <html> <head> <meta charset= ...

  2. DevExpress VCL 一键安装工具

    一键安装工具 DxAutoInstaller-2.1.3 For Devexpress VCL:http://download.csdn.net/detail/wozengcong/8396181 一 ...

  3. 2.MVC框架开发(视图开发----基础语法)

    1.区别普通的html,在普通的html中不能将控制器里面的数据展示在html中. 在MVC框架中,它提供了一种视图模板(就是结合普通的html标签并能将控制器里传出来的数据进行显示) 视图模板特性: ...

  4. Unity3d Shader开发(五)Fallback ,Category

    Fallback定义在所有子着色器后.简单来说,它表示"如果没有任何子着色器能被运行在当前硬件上,请尝试使用降级着色器". Syntax 语法 Fallback "nam ...

  5. 初识Tower Defense Toolkit

    Tower Defense Toolkit 做塔防游戏的插件 主要层次如下图: 1GameControl _ _Game Control(Script) _ _ _Spawn Manager _ _ ...

  6. 移动前端javascript事件

    移动端事件: // 手势事件 touchstart //当手指接触屏幕时触发 touchmove //当已经接触屏幕的手指开始移动后触发 touchend //当手指离开屏幕时触发 touchcanc ...

  7. Spring 数据源配置二:多数据源

    通过上一节  Spring 数据源配置一: 单一数据源  我们了解单一数据源的配置, 这里我们继续多个数据源的配置 如下(applicationContent.xml 内容) 一:  Spring   ...

  8. Linux PS 命令详解

    Linux操作系统PS命令详细解析 要对系统中进程进行监测控制,用 ps 命令满足你. /bin/ps ps 是显示瞬间行程的状态,并不动态连续:如果想对进程运行时间监控,应该用 top 工具. ki ...

  9. Vmware 8.00 文件共享ubuntu

    http://bolg.sinaapp.com/html/2012/1848.html 这是解决vm不能共享的解决方案. 今天学会的Linux命令: cp -i *** ~/tmp cd VMware ...

  10. .htaccess文件的详解以及404页面的设置

    打开记事本,写入以下代码: ErrorDocument 404 /404.html保存成.htaccess文件上传到网站的根目录. /404.html是目录名和文件名,可以改成自己的名字.QUOTE: ...