Oracle[转]ASP.NET 成员身价 Part.1(API)

     表单验证化解了 ASP.NET
应用程序页面验证的标题,但壹方面,必须本人完成登录表单与底层的证据存款和储蓄之间的通讯。对每三个WEB 程序来说,那个工作差不离都以均等的,卓殊单调。

利用成员身份 API

       行使成员身份 API 和 安全控件从前,必须达成以下步骤:

  1. 在 web.config
    文件中配置表单验证、禁止匿名用户访问
  2. 创制成员身价数据存款和储蓄。你必须在二个您选取的数据库中创立1些表和存款和储蓄进度
  3. 布局数据库连接字符串和您想要在应用程序的
    web.config 文件中运用的积极分子身价提供程序
  4. 创制登录页面,使用 Membership
    类验证用户输入的证据

       使用 ASP.NET WAT
能够做到除了提供程序配置以外的其余配置步骤。ASP.NET WAT
蕴涵了三个有惊无险指引,在 VS 中精选“网址”-“ASP.NET 配置”即可:

      
Oracle 1

       设若在壹台运营 SQL Server Express
的机器上运用
WAT,当创制第三个用户时,底层的多寡存款和储蓄会自行创造。当然,假如您通过编程访问成员身份数据存款和储蓄,它也会活动成立,那个职能是
SqlMembershipProvider 提供的。若是是此外版本的 SQL
Server,那么就必要手动配置数据源。

       当使用 SQL Server Express
版本时,SqlMembershipProvider 会在 App_Data 目录中创设二个名叫 ASPNETDB.MDF
的新数据库。这一个数据库实现完全的架构,它是保留用户音讯、角色消息、用户剧中人物赋权、本性化和用户配置属性所必备的。

      
要是你想行使自身的数据库而不是机关成立的数据库来存款和储蓄用户新闻和脚色消息,你必须在运维安全指导从前安顿成员身份提供程序和那些提供程序的一连新闻。

 

       ASP.NET 二.0 引入了成员身份 API,ASP.NET 四.0 保留了它。分子身份 API
是以现有的表单验证架构为根基的框架。

 

一. 布署表单验证

       分子身份 API
建立在表单验证的底子上,它提供了三个现成的架构管理和认证用户。由此,必须配备程序来使用表单验证

       通常,根目录对匿名用户来说是能够访问的,它一般包括登录页面和挂号页面之类的法力。由此,在根的
web.config 中只需包蕴启用表单验证即可:

<system.web>

    

  <authentication mode="Forms" />

    

</system.web>

       在子目录中,你能够再添加3个web.config
配置文件来禁止匿名用户访问网站的受保险的财富
,假使有人没有经过证实就视图访问这些目录下的能源,ASP.NET
运维时会自动将用户重定向到登录页面。

<authorization>

    

  <deny users="?"/>

    

</authorization>

 

4. 创造并证实用户

       运转 WAT 切换来平安标签,选拔创建用户:

      
Oracle 2

       创立多少个用户后,查看数据库的 aspnet_Users 表和
aspnet_Membership 表:

      
Oracle 3

      
Oracle 4

       密码和密码难点的答案都是散列字符串的款式存放在数据库中,因为您在
<membership> 配置节中对提供程序选拔了 passwordFormat=”Hashed” 。

 

       将来得以运用成员身价 API
来评释这么些用户了。随便创造叁个报到页面,使用下边代码来验证用户凭证:

protected void btnLogin_Click(object sender, EventArgs e)

    

{

    

    // Membership: 验证用户凭据并管理用户设置

    

    // ValidateUser(): 验证提供的用户名和密码是有效的

    

    if (Membership.ValidateUser(txtName.Text, txtPwd.Text))

    

    {

    

        FormsAuthentication.RedirectFromLoginPage(txtName.Text, false);

    

    }

    

    else

    

    {

    

        LegendStatus.Text = "Invalid user name or password.";

    

    }

    

}

 

      
你并不供给知道应用程序具体运用的是哪些应用程序(Membership
是它们的基类)。借使要换提供程序只需修改配置文件。

 

 

分类: ASP.NET

       而且,表单验证只提供了验证用户的架构。假诺你选用二个自定义的证据存款和储蓄,就不能够不协调写管理用户的管理应用程序,它应当贯彻拉长用户、删除用户、重设密码等效果。那又是1串对于
Web 程序来说大致的工作。

ASP.NET 成员身价 API 简介

       成员身份 API
框架提供了1整套全体的用户管理效果

  • 透过编程只怕 ASP.NET 的 Web 配置工具来制造和删除用户
  • 重置用户密码,还足以自动发送密码重置邮件
  • 比方用户通过后台程序创造,能够为用户自动生成密码,还能将密码通过邮件自动发送给用户
  • 提供了一俯十皆是预建控件成立登录页面、注册页面、显示登录情形、为表明过和未认证过的用户提供分歧的视图
  • 经过分子身价提供程序类为应用程序提供了三个抽象层,以上全部机能都足以不借助于底层的数量存款和储蓄而完全部独用立工作。底层的数码存储也得以在不需求修改程序的动静下,使用任何门类的多少存款和储蓄机制来替换。暗许情状下,成员身价
    API 使用 SQL Server Express 数据仓库储存款和储蓄用户和剧中人物新闻

 

       分子身份 API 的构造(顺序亦为层次关系)

  1. 有惊无险控件:登录控件、密码控件、创造用户向导、状态控件
  2. 成员身价 API :Membership 类、[MembershipUser 类]
  3. 成员身价提供程序:SQL Server
    提供程序、活动目录提供程序、自定义的提供程序
  4. 分子身份存款和储蓄:SQL Server、活动目录、自定义的储存 (例如,Oracle)

 

       成员身价 API
的统一筹划使其得以完全部独用立于它的平底数据存储来工作。作为程序的开发职员,首要就是和 ASP.NET
提供的控件以及 Membership 类打交道。全数与成员身价 API
相关的类都被放在了 System.Web.Security 命名空间中

分子身价 API 相关的类:

Membership 这个类是和成员资格 API 交互的主要部分,它提供了一组方法来管理用户、验证用户以及重置用户密码
MembershipCreateUserException 当视图通过 Membership 类创建用户时,如果发生错误,会抛出一个异常
MembershipUser 代表一个存储在成员资格 API 凭证存储中的单独用户。包含此用户的所有信息,Membership 类有好几个方法返回此对象,例如 GetUser()
MembershipUserCollection 成员资格用户的集合,例如 Membership.GetAllUsers() 可以返回此对象
MembershipProvider 继承这个基类可以创建自定义的成员资格提供程序,这样就可以根据你自定义的凭证存储来验证用户了
MembershipProviderCollection 计算机以及 Web 应用程序的所有可用成员资格提供程序的集合
SqlMembershipProvider MembershipProvider 类的一个实现,与 SQL Server 数据库一同工作
ActiveDirectoryMembershipProvider MembershipProvider 类的一个实现,与活动目录一同工作
ActiveDirectoryMembershipUser 这个类继承了 MembershipUser 的所有功能,并添加了一些与活动目录相关的属性

      成员身价只用来管理和验证用户,它不落实任何授权成效,也不提供管理用户剧中人物的成效。因而,你不可能不选拔剧中人物API(后续小说会介绍)。

 

 

三. 布局连接字符串和分子身价提供程序

       要是使用本人的 SQL Server
数据库,甚至自定义的分子身份提供程序和数量存款和储蓄,则必须正确的布置提供程序和十分的接连到成员身份存款和储蓄数据库的连接字符串。

       比如,你想行使三个名称为 MyDatabase 的地点数据库配置连接字符串:

<connectionStrings>

    

  <add name="MyMembershipConnString"

    

       connectionString="data source=(local)\SQLEXPRESS;

    

                         Integrated Security=SSPI;

    

                         Initial Catalog=MyDatabase"/>

    

</connectionStrings>

       还非得为利用配置成员身价提供程序,必需把 <membership>
节添加到 web.config 文件的 <system.web> 中:

<membership defaultProvider="MyMembershipProvider">

    

  <providers>

    

    <add name="MyMembershipProvider" 

    

         connectionStringName="MyMembershipConnString"

    

         applicationName="MyMembership"

    

         enablePasswordRetrieval="false"

    

         enablePasswordRest="true"

    

         requiresQuestionAndAnswer="true"

    

         requiresUniqueEmail="true"

    

         passwordFormat="Hashed"

    

         type="System.Web.Security.SqlMembershipProvider"/>

    

  </providers>

    

</membership>

       在 <membership>
节中得以增进多少个作为 <providers> 节的子成分。defaultProvider
天性非凡主要,那么些特点钦点你的应用程序将选拔的积极分子身份提供程序。

 

SqlMembershipProvider 的属性

name 可任意指定提供程序名称。编程访问已配置的成员资格提供程序列表时,这个名字可作引用。此外,WAT 使用它显示提供程序
applicationName 指定成员资格提供程序为之管理好用户和用户设置的程序名。可以为多个应用程序使用一个成员资格数据库。用户和角色总是和应用程序相关联。
description 描述。可选
passwordFormat 获取或设置密码在底层凭证存储中的存储格式。Clear(纯文本)、Encrypted(用本地配置的机器码加密密码)、Hashed(散列化密码)
minRequiredNonalphanumericCharacters 指定密码必需含有的非字母数字字符的个数。重要,这是指定用户所使用密码的强度要求
minRequiredPasswordLength 密码最短长度。这也是一个指定密码强度的指标
passwordStrengthRegularExpression 可以使用正则表达式指定一个有效的密码格式,这就可以非常灵活的指定密码的标准格式了
enablePasswordReset 可以重置密码。如果程序中配置了一个 SMTP 服务器,它还会发送一封 Email
enablePasswordRetrieval 如果为 true,通过 MembershipUser.GetPassword() 可以取回密码。当然,这只有在密码没有被散列化的情况下才起作用
maxInvalidPasswordAttempts 指定用户被锁定之前无效验证重试的次数。默认值 5 。
passwordAttemptWindow 设置以分钟计的时间。在这段时间内可以尝试多次无效密码或者密码回答,时间一过,用户立即被锁定。默认值 10 分钟。管理员必须再次激活这个账号
requiredQuestionAndAnswer 指定程序是否启用密码问题功能。用户忘记密码后并正确回答了问题,他可以通过 Email 重新获得一个自动生成的密码
requiredUniqueEmail 在底层的成员资格存储中指定用户的 Email 地址是否必须唯一

       applicationName
属性要越发注意。实际上,成员身份数据Curry的兼具指标都和二个应用程序相关联。假诺未有在成员身份配置里钦赐applicationName,API 或 WAT
会把那几个指标通过名称“/”关联到根应用程序。

 

正文转自:http://www.cnblogs.com/SkySoot/archive/2013/04/08/3008418.html

二. 创制数量存款和储蓄

       从前提过,当和 ASP.NET 一起行使 SQL Server Express
版本时,SqlMembershipProvider 会自动创立那一个蕴藏。但要是是其余版本的 SQL
Server,你不能够不手工业创制那么些蕴藏。

       不选用基于文件自动叠加的数据库的法子还有局部任何原因:质量和并发性。

       SQL Server Express 能够以两种艺术选拔数据库:

  • 古板格局:成立或附加1个数据库到 SQL Server 服务,然后 SQL Server
    会对数据库有壹齐的控制并能够把该数据库并发地提供给五个应用程序和用户
  • 文本格局您的主次能直接待上访问 SQL
    Server 数据库文件,不需把该公文附加到 SQL Server
    实例
    。在需求时,SQL Server Express
    实例会动态的叠加或分开此文件,文件只被锁定一段较短的时光,这不仅使得对数据库文件的复制变得很不难,同时,在做客时要求卓越的载荷。其余,在为某些应用程序附加数据库时期,别的应用程序都不可能访问该数据库,因为它被日前移动的应用程序锁定了。那种方式适合 Windows
    客户端应用程序和付出,但不符合生育环境

 

       对于生产环境,指入手工业创制成员身份数据库。对于
SqlMembershipProvider ,创设那样三个数量存款和储蓄意味着创设一个 SQL Server
数据库并在这么些库里创立壹组表和存款和储蓄进度。ASP.NET 发布了壹多重 SQL
脚本得以用来手工业成立数据库和表。ASP.NET
还揭橥了一个工具,它能够在你挑选的数据Curry创制那一个数据库表和存款和储蓄进度。

       以此工具叫作 aspnet_regsql.exe。由此三个开头页面或然命令行使用专门的命令行开关都足以很便利的运行它。无论哪一种情景,都无法不从“Visual Studio
命令行提醒”窗口中运行它,因为它包罗了富含必需工具的 .NET Framework
目录的不二诀要音讯。假如不加任何参数运行那个工具,该工具会运行3个向导界面,它指点你通过一文山会海步骤成立数据库:

      
Oracle 5

      
Oracle 6

      
Oracle 7

      
Oracle 8

 

       也得以因而命令行使用 aspnet_regsql.exe。实际上,那是自动化程序安装的好情势。比如,要创设成员身价
API 数据库表,能够进行下边的授命:

aspnet_regsql.exe –S
(local)\SQLEXPRESS –E –A all –d MyDatabase

      
Oracle 9

aspnet_regsql.exe 的命令行开关

-S 服务器名 指定 SQL Server 和你想要为其安装 ASP.NET 数据库表的实例
-U 用户名 如果不用 Windows 验证连接 SQL Server,那这是必需的
-P 密码 如果指定了 –U 开关,也需要指定密码开关
-E 显式的指定使用 Windows 验证连接到 SQL Server
-C 允许指定一个用来连接数据库的完整的 ODBC 或者 OLEDB 连接字符串
-sqlexportonly 未添加和删除指定的选项生成 SQL 脚本,而无须在专门的 SQL Server 实例上安装它们
-A 安装应用程序服务。这个参数有效选项为 all、m[成员资格]、r[角色服务]、p[支持用户配置的 ASP.NET 用户配置]、c[Web 部分页面的个性化]、w[SQL Web 事件提供程序]。
-R 卸载应用程序服务。有效选项和 –A 相同
-d 让你随意指定要按照应用程序服务的数据库的名称。默认为 aspnetdb

       aspnet_regsql.exe
工具还蕴藏了其余多少个开关,用于安装基于 SQL Server 的对话状态以及布置 SQL
缓存正视(参考以前类别小说)

 

一. ASP.NET 服务的数据库脚本

       aspnet_regsql.exe
执行几个脚本来成立或删除成员身价相关的多寡库表。那么些本子由 .NET
Framework 提供:

      
Oracle 10

       基本上存在 2 体系型的本子:InstallXXX 和 UninstallXXX,你们懂的。

 

分子身价 API 的装置脚本

InstallCommon.sql 安装成员资格 API 和角色 API 所必需的一些公用的表和存储过程
InstallMembership.sql 安装成员资格 API 使用的表、存储过程和触发器。包含用户表、额外用户属性表和用来访问这些信息的存储过程表
InstallRoles.sql 安装关联用户和程序角色所需要的所有数据库表和存储过程,用于授权
InstallPersonalization.sql 包含用来创建表和存储过程的 DDL。这些表和存储过程是创建带有 Web 部件的个性化网上门户应用程序所必需的
InstallProfile.sql 创建用来支持 ASP.NET 用户配置的所有必需的表和存储过程
InstallSqlState.sql 在 SQL Server 的 TEMP 数据库中安装持久会话状态所需的表。这意味着每次 SQL Server 服务关闭时,会话状态就会丢失
InstallPersistSqlState.sql 在一个单独的 ASPState 数据库中安装持久会话状态所需的表。这意味着即使 SQL Server 服务重新启动,状态仍然存在

       要是你不想或不能够应用 aspnet_regsql.exe,也能够选用 sqlcmd.exe 命令行工具来施行那几个本子:

sqlcmd –S (local)\SQLEXPRESS –E –i InstallCommon.sql

 

二. 基于文件的 SQL Server 存款和储蓄

       以前早已说过,那种情势允许你通过 MDF 文件直接待上访问 SQL Server
数据库,而不须求在1个 SQL Server
实例中创设大概附加它们。只需将数据库文件复制到目标服务器上即可。可是,传闻文件的方式只用于 Express
版本,大版本不扶助那种方式,因为它1般对于高度可扩展的生育环境不实用

 

 

相关文章