大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 技术开发 -> NET专区 -> 使用更精简的代码保证 ASP.NET 应用程序的安全

使用更精简的代码保证 ASP.NET 应用程序的安全

时间: 2021-07-31 作者:daque

使用更精简的代码保证 ASP.NET 应用程序的安全michele leroux bustamanteidesign:.net design and business solutions2003 年 10 月实用于: microsoft® asp.net whidbey纲要:进修 asp.net whidbey 及其新的摆设东西、控件和组件怎样扶助用来考证用户和处置受养护资源的完备体例。 载入 aspnetwhidbeysecuritysample.msi。(请提防,在示例文献中,步调员的解释运用的是英文,正文中将其译为华文是为了便于读者群领会。)目次直觉易用的功效 摆设界面 拖放安定控件 按脚色过滤实质 分子身份和脚色供给步调 然而,这个步调是可扩充的吗?总结提防:相映的软硬件产物正式刊行之前,正文档仍旧撰写结束,以是咱们不许保护正文档内波及的详细与最后产物实足普遍。文中消息刻画的是正文档颁布之时的产物,仅供在筹备时参考之用。如有变动,恕不另行报告。我编写翻译了很多 microsoft® asp.net 运用步调,比方存户端运用步调和原形、我本人连接延长的站点和扶助不会编制程序的家人和伙伴所开拓的站点,以及作品、演练文稿和培养和训练课程的代码。我常常创造本人在编写翻译每个运用步调时,总有某些反复的工作要做,这个中很大学一年级局部是设置考证模子。养护运用步调资源简直是安排任何运用步调时必不行少的一项处事。asp.net 1.x 让工作变得大略了些,它供给了一个颇为大略和安定的、鉴于表单的考证过程,但您仍要纠葛于脚色处置和其余处事之中。即使每安排一个新登录表单不妨挣 5 美分,那么我此刻起码仍旧挣了 10 多美元,算一算,我安排了几何个表单。行将刊行的新本子 asp.net 的开拓代号是“whidbey”(与行将刊行的新本子 microsoft® visual studio® .net 的开拓代号普遍),它供给了很多新的摆设东西、控件和组件,以扶助用来考证用户和处置受养护资源的完备体例。那些新功效格外直觉易用,纵然您的奶奶也能在一天内建立一个安定站点。直觉易用的功效依照保守做法,为新 web 站点建立一个考证模子常常囊括以次办法: 搜集受养护资源和震动的诉求,并设置符合的脚色和权力。 安排联系数据库表,以保存用户、脚色及关系权力。 安排登录页面。 编写代码,以考证用户并搜集关系的脚色和权力。 增添摆设,以鉴于脚色来养护 web 资源。 编写代码,以鉴于脚色和权力来遏制页面实质。 纵然不过建立几个可反复运用的组件来封装上述某些反复性工作,您仍会感触肩上的处事承担减少了不少。asp.net whidbey 的新组件大大缩小了上述办法中的五个办法的处事量,起码将其缩小为了从来处事量的一局部。我将运用新的鉴于 web 的处置引导来机动创造一组表,以处置用户、脚色和权力。在同一个处置界面中,我还会就登录、分子身份和脚色处置对运用步调举行摆设。我将在一秒钟(大概说只是是在 web 表单中拖放一个登录控件的功夫)之内安排出一个登录页面,并且我基础不必编写一条龙用来考证用户或关系脚色的代码,由于那些会机动实行。按照用户脚色和登录状况的各别,表露的菜单和页面实质也将各别,但我同样无需为此编写任何代码。是否有理想成真的发觉?让咱们看看这是怎样实行的。摆设界面asp.net whidbey 囊括一个新的鉴于 web 的摆设东西,它运转于一定运用步调的左右文中,如许便不妨经过交互的办法来窜改运用步调自己的 web.config 文献。该东西带有很多引导,个中一个不妨启发您实行树立安定选项的十足办法。运用 visual studio“whidbey”实行新 web 站点的创造后,您不妨经过两种本领启用该摆设东西:从“solution explorer”(处置计划资源欣赏器)中采用“asp.net configuration”(asp.net 摆设)图标或从“website”(站点)菜单中采用“asp.net configuration”(asp.net 摆设)。图 1:从“solution explorer”(处置计划资源欣赏器)或主菜单启用鉴于 web 的摆设适用东西。摆设 web 界面启用时会表露一个查问字符串,引导要摆设的运用步调目的。在正文中,我创造了一个名为“mysecurenewsletter”的新运用步调,并启用了处置界面,如次所示:图 2:在我的计划机上启用处置界面包车型的士 url 是 http://localhost:10245/asp.netwebadminfiles/default.aspx?applicationphysicalpath=h:\websites\mysecurenewsletter\&applicationurl=/mysecurenewsletter。“security”(安定)选项卡中的一个选项是运转“security setup wizard”(安定树立引导)。对于一个新运用步调,该当开始运转该引导。引导界面包车型的士左侧面板表露了将要渐渐实行的办法列表,并指出您暂时地方的办法:图 3:安定树立引导运用 asp.net whidbey 的某些其余很酷的功效,比方用来导航的引导控件。树立进程中的办法特殊大略,以是在此仅概括我为示例运用步调所选的选项。开始,引导咨询我该站点是 intranet 站点仍旧 internet 站点。前者默许运用 windows 考证,后者(也是我的采用)将把运用步调摆设为运用表单考证。下一步,引导表露创造数据库以保存用户和脚色的选项。即使采用此选项,引导将咨询我是采用创造 microsoft access 数据库仍旧创造 microsoft sql server™ 数据库,而后启发我实行几个附加的办法。我没有采用这个选项,以是在运用步调的 \data 目次下将创造一个默许的 access 数据库。在 machine.config 文献中,<connectionstring> 元素指定了 access 数据库的默许场所: <connectionstrings> <add name="localsqlserver" connectionstring="data source=127.0.0.1;integrated security=sspi" /> <add name="accessfilename" connectionstring="~\data\aspnetdb.mdb" /> </connectionstrings>下一步,我起用了该运用步调的脚色处置。此时,将创造带有洪量表格的默许 access 数据库,而且最后将由新的安定控件和分子身份 api 来运用那些表。此时,我不妨采用创造脚色和用户。创造每个脚色时都须要运用大略的字符串值,如次所示:图 4:界面左侧的引导面板表露我正在对运用步调的安定模子实行哪一步树立。要创造用户,须要构想一下您大概蓄意为每个用户搜集哪些字段,更加是用户名、暗号、电子邮件、证明和可选暗号题目及谜底。即使已创造了任何脚色,则那些脚色表露为复选框选项的情势以供采用:图 5:此处输出的电子邮件字段此后将用来与用户举行交互,比方在用户取回暗号时。经过之上几个大略的办法,咱们已在 \data 目次下创造了一个新数据库(文献名为 aspnetdb.mdb),用来保存分子身份消息。革新“solution explorer”(处置计划资源欣赏器)此后,您还不妨看到已创造了一个 web.config 文献,用来起用 <rolemanager> 树立中的脚色处置。这一步是必定的,由于 machine.config 中的默许树立是禁止使用脚色处置。新的 web.config 文献如次所示:<?xml version="1.0" encoding="utf-8"?><configuration> <system.web> <rolemanager enabled="true"> <providers /> </rolemanager> </system.web></configuration>在之上数个简略的办法中,我创造了规范的分子身份和把柄处置数据库,脚色和用户也创造结束,并实行了脚色处置必定的 web 摆设,此刻咱们就不妨建立一个安定的运用步调了。即使没有在第一次摆设进程中实行脚色和用户的创造,您不妨随时归来到该摆设东西输出或窜改树立,但我此刻将演练怎样创造本人的处置页面。拖放安定控件到作品的本节为止,您仍旧不须要编写任何代码。我将演练怎样运用 asp.net whidbey 的新安定控件来天生一个鉴于脚色的可行的考证体例。我将从我的示例电子通信运用步调 mysecurenewsletter 发端。暂时,除去我方才在引导中实行的办法除外,尚未天生任何安定模子。特地说一句,这个运用步调运用了 whidbey 新的“母版页”功效。对于该功效的精细消息,请参见 master pages in asp.net whidbey(英文)。在“solution explorer”(处置计划资源欣赏器)中,您将看到 /templates 目次下包括可反复运用的用户控件和母版页沙盘,而 /images 目次保存一切扶助图形,根目次下则有少许运用步调页面。图 6:示例运用步调中的一切 *.aspx 页面都将运用一个母版页动作构造沙盘。实质页面和 web 表单页面一律,但前者指定了母板页沙盘,且一切的实质都放在实质控件中。登录增添名为 login.aspx 的新实质页面此后,咱们不妨发端享用些欢乐了。“toolbox”(东西箱)带有“security”(安定)选项卡,个中列出了 asp.net whidbey 中与安定性关系的特殊酷的新控件。图 7:“toolbox”(东西箱)仍旧对准 asp.net whidbey 举行了从新构造,新的安定控件将会合到它们本人的选项卡上。我将从方才拖放到新的 login.aspx 页面上的“login”(登录)控件发端,一个个地欣赏那些安定控件:图 8:登录控件供给了编纂控件默许构造的交互式安排器界面。您不妨采用某一个“autoformat”(机动套用方法)选项来为控件表面采用一个已封装的方法:图 9:暂时有两个已封装方法可用,但即使运用步调运用了默许款式表,您还不妨经过“properties”(属性)窗口为控件的各个元素指定款式。“properties”(属性)窗口还供给了对控件各个元素的标志、值和考证缺点动静的考察。您也不妨自设置登录按钮的表面,并供给创造新分子的链接。此刻,让咱们看看运用确凿任的款式表和控件默许选项会天生些什么。控件天生的源代码如次所示:<asp:login id="login1" runat="server"></asp:login>如许,我的登录页面就实行了。由于我仍旧摆设了运用步调的用户和脚色,以是我仅需窜改 web.config 文献,把考证形式树立为“forms”(表单),由于默许办法是“windows”考证。同声,为了尝试登录过程,我还将中断隐姓埋名用户: <authentication mode="forms"/><authorization> <deny users="?" /> </authorization>提防:我开始曾说起安定树立引导将运用步调摆设为运用表单考证,该引导是经过天生默许数据库以保存把柄来实行该摆设的。该引导并不是(在 whidbey alpha 本子中)经过窜改运用步调的 web.config 文献中的 <authentication> 树立来指定如上所示的表单考证形式。此刻,体例将启发一切的隐姓埋名用户前去登录页面(好在运用了母版页和款式表,在花了一秒钟将登录控件拖动到表单后,这个页面看上去还过得去):图 10:在没有窜改任何属性的情景下,这是在页面沙盘中表露的登录控件的默许表面。谁仍旧登录了?即使输出了灵验的用户名和暗号,“log in”(登录)按钮将机动考证用户,并将其重定向到首先乞求的页面。固然,登录此后,风气上要为用户表露天性化的欢送页面,并供给刊出的道路。我将把这两个功效增添到表露在每个页面中的 menus.ascx 用户控件。“loginname”(登录名)控件表露了已考证的用户名,而“loginstatus”(登录状况)控件则供给了一个简单的超等链接,它会按照暂时考证状况,在登录和刊出操纵之间切换。以次是将这两个新控件增添到 menus.ascx 文献的符合场所后的 html 源代码:暂时您已登录为: <asp:loginname id="loginname1" runat="server"></asp:loginname><asp:loginstatus id="loginstatus1" runat="server"></asp:loginstatus>噢,这太大概了。此刻有了登录页面,让咱们看看用户登录此后表露的天性化欢送页面,同声咱们还为用户供给了刊出的道路,一切那些都不须要编写代码。图 11:在 login(登录)/logout(刊出)之间切换登录名控件只实行一个工作:表露已考证用户的称呼。默许情景下,登录状况控件机动在 login(登录)/logout(刊出)之间切换,但不妨运用沙盘进一步自设置。刊出的本质过程也由该控件举行封装。对于此天性化欢送页面包车型的士独一题目是:在登录之前,页面会表露空缺用户名,咱们大概须要编写少许代码来遏制这一局部。然而,大概咱们同样不妨不必编写代码就能做到。遏制对实质的考察即使运用往日的 asp.net 版从来表露暂时已考证的用户,咱们须要编写代码来考察暂时左右文的用户标识。要仅在用户考证后表露该消息,还须要编写更多的代码来查看用户的状况。“loginview”(登录视图)控件大概是最有道理的新安定控件之一,它让咱们不妨鉴于考证状况和脚色来遏制页面实质。为了检查这一点,我向 menu.ascx 文献增添了一个登录视图控件。经过与安排情况举行交互,您不妨编纂蓄意隐姓埋名用户(尚未登录)或已考证用户所看到的消息。图 12:“common loginview tasks”(通用登录视图工作)使您不妨在视图之间切换,或经过单击“edit templates”(编纂沙盘)超等链接发端编纂沙盘。您一直不妨经过“source”(源文献)视图径直窜改 html。以次代码表露了向 menus.ascx 文献的天性化欢送页面中增添登录视图控件时所做的窜改:<asp:loginview id="loginview1" runat="server"> <anonymoustemplate> 您暂时尚未登录。 </anonymoustemplate> <loggedintemplate> 暂时您已登录为:<asp:loginname id="loginname1" runat="server"> </asp:loginname> </loggedintemplate></asp:loginview>登录视图控件在用户尚未经过考证时表露 <anonymoustemplate> 节的实质,用户经过考证后表露 <loggedintemplate> 节的实质。以是,没有编写任何代码,咱们已运用安定控件为用户供给了登录页面、刊出功效、天性化欢送页面和鉴于考证状况的自设置页面实质。什么?忘怀了暗号?您确定会感触难以相信,机动处置暗号即是如许大略。“passwordrecovery”(暗号取回)控件供给了功效完备的暗号取回体例,囊括鉴于暗号题目搜索暗号以及机动重设暗号,并经过电子邮件将暗号发送给用户。我在运用步调根下创造了暗号取回页面,在将暗号取回控件拖放到页面后,我看到了以次实质:图 13:“common passwordrecovery tasks”(通用暗号取回工作)使您不妨自设置该进程中的每一办法的表面。暗号处置安排的洪量震动都是不妨摆设的。比方,您不妨诉求用户创造暗号题目和谜底,并将其动作暗号安定模子的一局部。passwordrecovery 控件囊括如许一个界面,诉求用户回复她们在创造帐号时供给的暗号题目。如次所示,您不妨编纂暗号取回的每一局部的树立,囊括乞求用户名、咨询暗号题目,以及实行该进程后表露对用户的相应。图 14:暗号题目和谜底的情势可由分子身份供给步调(正文稍后将引见)举行摆设。此控件机动重设暗号,并将新暗号发送给用户的电子邮件帐号。天生的电子邮件的属性可经过控件的大众属性举行摆设。在示例步调中,我自设置了电子邮件的中心题目和发件人的地方。所天生的 html 如次所示: <asp:passwordrecovery id="passwordrecovery1" runat="server"> <maildefinition bodyformat="html" subject="password recovery for mysecurenewsletter" from="mailto:mailadmin@dotnetdashboard.com"> </maildefinition> </asp:passwordrecovery>即使精确地摆设了用来发送电子邮件的 smtp 效劳器,我将接受到包括新暗号的电子邮件:图 15:经过在“properties”(属性)窗口中树立“bodyfilename”和“bodyformat”属性,不妨供给电子邮件的 html 沙盘。在示例中,我运用本人的 smtp 效劳器尝试了该功效,而您将在 web.config 文献中看到 smtp 树立的这个示例: <smtpmail servername="smtp.mysmtpserver.com" serverport="25"> </smtpmail>这是一个怪僻的功效,为处置暗号处置供给了赶快的安定计划。但对于巨型站点,您很大概蓄意进一步领会组件的体制构造。比方,您蓄意保证天生电子邮件的组件具备可舒卷性,您还大概想编写少许代码来遏制怎样经过电子邮件向分子发送暗号:大概是供给对表露解密暗号的已过时 web 页面包车型的士链接。按脚色过滤实质大普遍运用步调依附脚色来遏制对资源的考察、消息表露办法和可承诺的震动。此前,我创造过很多用户,并运用安定处置东西来为其指定脚色。即使是在 asp.net 的往日本子中运用那些脚色,我就得编写代码,以从已考证的用户的把柄保存中手动物检疫索脚色。loginview 控件经过摆设的分子身份供给步调(大概是分子身份 api)与那些脚色举行交互,并扶助为任何灵验脚色供给实质沙盘。假设我将把一组仅能由处置员考察的处置页面增添到运用步调。即使向题目中一个“admin”(处置)菜单项,我很大概蓄意其仅对处置员表露。为了实行这一点,我将把另一个登录视图控件增添到菜单界面。loginview 控件的某个属性(可经过“properties”[属性] 窗口考察)扶助经过对话框界面将脚色列表增添到“rolegroups”(脚色组)汇合:图 16:“rolegroup collection editor”(脚色组汇合编纂器)诉求手动输出脚色。您也不妨为脚色编组,如许多个组不妨共享同样的沙盘界面。在“design”(安排)视图中,loginview 控件此刻将脚色列表表露为沙盘选项:图 17:“html”视图将革新,表露您为每个脚色所安排的一切沙盘。从以次 html 源文献中不妨看出,“admin”(处置)和“member”(分子)脚色运用了新的实质沙盘。在考证往日仍将运用 <anonymoustemplate>,但考证此后,将运用与某个用户脚色配合的第一个沙盘。即使未找到配合项,默许运用 <loggedintemplate> 树立。<asp:loginview id="lvmenu" runat="server"> <anonymoustemplate> <asp:loginstatus id="anonloginstatus" runat="server"> </asp:loginstatus> </anonymoustemplate> <rolegroups> <asp:rolegroup roles="admin"> <contenttemplate> <tr> <td class="othertabs"> <asp:hyperlink id="adminhome" runat="server" navigateurl="~/default.aspx">home</asp:hyperlink>  | </td> <td class="othertabs"> <asp:hyperlink id="adminabout" runat="server" navigateurl="~/about.aspx">about</asp:hyperlink>  | </td> <td class="othertabs"> <asp:hyperlink id="adminadmin" runat="server" navigateurl="~/admin/managemembers.aspx">admin </asp:hyperlink> | </td> <td class="othertabs"> <asp:loginstatus id="adminloginstatus" runat="server"> </asp:loginstatus> </td> </tr> </contenttemplate> </asp:rolegroup> <asp:rolegroup roles="member"> <contenttemplate> <tr> <td class="othertabs"> <asp:hyperlink id="memberhome" runat="server" navigateurl="~/default.aspx">home</asp:hyperlink>  | </td> <td class="othertabs"> <asp:hyperlink id="memberabout" runat="server" navigateurl="~/about.aspx">about</asp:hyperlink>  | </td> <td class="othertabs"> <asp:loginstatus id="memberloginstatus" runat="server"> </asp:loginstatus> </td> </tr> </contenttemplate> </asp:rolegroup> </rolegroups> <loggedintemplate> <tr> <td class="othertabs"> <asp:hyperlink id="authhome" runat="server" navigateurl="~/default.aspx">home</asp:hyperlink>  | </td> <td class="othertabs"> <asp:hyperlink id="authabout" runat="server" navigateurl="~/about.aspx">about</asp:hyperlink>  | </td> <td class="othertabs"> <asp:loginstatus id="authloginstatus" runat="server"> </asp:loginstatus> </td> </tr> </loggedintemplate></asp:loginview>将依照表露的程序领会那些沙盘,并将第一个配合的脚色用作该登录控件的实质。这表示着必需提防地为脚色安置符合的程序。我的示例步调的截止是将新的“admin”(处置)菜单项控制为只对调配了处置脚色的用户表露。咱们还不妨指定 <authorization> 准则中断或承诺一定的脚色,进而实行运用脚色来遏制对其余资源的考察。不妨运用 <location> 标志在 web.config 文献的运用步调级别实行这一点,或是将 web.config 文献增添到受养护的子目次。我在示例步调的 /admin 目次下安置了以次 <authorization> 树立,只承诺那些指定于处置脚色的用户考察: <authorization> <allow roles="admin" /> <deny users="*" /> </authorization>此刻,不妨创造少许处置页面来处置分子,并按照 asp.net whidbey 供给的分子身份 api 来编写代码。分子身份和脚色供给步调至此,我所表露的大普遍实质都是鉴于运用新的安定控件。然而,有少许普通组件承诺咱们径直处置用户和脚色。那些组件供给了从数据库考察层笼统而来的层。为了举行演练,我将在 /admin 目次下创造一个新的实质页面 (managemembers.aspx)。该页面将表露电子通信分子的列表,并供给了一个重心界面,用来增添、编纂或简略电子通信分子。我将“dataview”(数据视图)控件拖放到页面中,手段是运用用户列表弥补此控件。page_load 事变包括了运用里面分子身份东西检索一切用户的代码。新的 membership 类的本领和属性供给了对默许创造的分子身份数据库的径直考察。比方,getallusers() 归来了运用步调的 membershipuser 东西的汇合。以次代码将归来的汇合变换为不妨绑定到 dataview 控件的方法(用来 alpha 本子的处置计划,由于该本子中不许绑定汇合):membershipusercollection members = membership.getallusers ();arraylist arr = new arraylist ();foreach (membershipuser member in members){arr.add (member);}gridview1.datasource = arr;gridview1.databind ();在该页面中,用户不妨增添、编纂或从列表简略分子。简略链接需仅实行以次代码行:membership.provider.deleteuser(user);增添和编纂分子由所创造的另一个新页面 (newmembers.aspx) 来处置。增添新分子时,该页面搜集要增添到分子数据库的新分子的必定消息。就我的电子通信而言,我将搜集新分子的电子邮件地方和暗号,仅此罢了。然而,数据库扶助一个用户名和一个电子邮件地方,以是我同声运用电子邮件地方来弥补这两个字段。其余,我将搜集新用户的脚色采用。这表示着我必需编写代码,以动静列出运用步调中一切可用的脚色。page_load 事变包括用来加载可用脚色的代码。我将运用“repeater”控件来动静建立一个复选框列表(与安定摆设引导中的列表一致)。// 从 newmember.aspx<asp:repeater runat="server" id="rolerepeater"> <itemtemplate> <asp:checkbox runat="server" id="chkrole" text='<%# container.dataitem.tostring()%>' checked="<%# m_theuser == null ? false : roles.isuserinrole(m_theuser.username, container.dataitem.tostring())%>"/> <br/> </itemtemplate></asp:repeater>// 从 newmember.aspx.csrolerepeater.datasource = roles.getallroles ();rolerepeater.databind ();所天生的输出页面如次所示:图 18:您也不妨为本人的分子处置过程增添重设暗号、变动暗号和暗号题目及谜底功效。我必需手动安排该页面,但个中增添新用户所需的代码很少,由于不妨再次运用分子身份组件:membership.createuser(email.text, pw.text, email.text);咱们须要多编写几行代码,以从 repeater 控件中索取脚色采用,而后用该用户的索取截止弥补脚色表。同样,考察脚色数据库是很简单的,这次运用的是“roles”(脚色)组件:string[] users = {email.text};string[] addroles = new string[rolerepeater.items.count];string[] remroles = new string[rolerepeater.items.count];int addindex = 0;int remindex = 0;foreach (repeateritem itm in rolerepeater.items){checkbox c = (checkbox)itm.findcontrol ("chkrole");string role = c.text;if (c.checked && !roles.isuserinrole(users[0], role)) addroles[addindex++]=role;else if (!c.checked && roles.isuserinrole(users[0], role)) remroles[remindex++]=role;}if (addindex > 0){string [] theroles = new string[addindex]; array.copy (addroles, 0, theroles, 0, addindex); roles.provider.adduserstoroles (users, theroles);}if (remindex > 0){string [] theroles = new string[remindex]; array.copy (remroles, 0, theroles, 0, remindex); roles.provider.removeusersfromroles (users, theroles);}同一 newmembers.aspx 页面不妨用来编纂用户,查问字符串则用来引导暂时的形式。在编纂形式中,page_load 将运用用户消息和暂时脚色弥补界面。同样,membership 类供给了搜索一定用户记载和革新已变动用户记载的本领。即使我运用纯文本暗号,而且在分子身份供给步调摆设树立中起用了暗号检索,那么以次代码将革新用户的暗号变动:membershipuser user = membership.getuser (email.text); user.changepassword (user.getpassword (), this.pw.text);默许情景下,getpassword() 将波折,由于对所增添的安定性安置了每个分子身份供给步调的 machine.config 树立。其余,散列暗号是供给步调的默许、也是引荐的办法。由于散列暗号不行检索,以是您将必需从用户界面搜集用户的旧暗号,以挪用 changepassword() 因变量。然而,这个步调是可扩充的吗?至此,我从来偏重于怎样本领更轻快地实行考证和鉴于脚色的考察遏制。固然那些已封装的功效不妨满意您百分之八十的需要,您还不妨特殊简单地扩充该模子。数据库创造比方,不妨径直经过安定摆设引导将数据库创造进程扩充为扶助 sql server 数据库,或是另一个自设置的 access 数据库。即使在引导的办法中采用创造一个新数据库,您将看到如次的示例图:图 19:安定引导将在您所采用的当地或长途数据库中创造默许的一构成员身份处置表。您不妨在运用步调的 sql server 数据库市直接创造分子身份表,而不是运用没辙举行任何扩充的 access 数据库。这是我觉得有超过的场合。大概您的奶奶没辙领会实行该办法所需的数据库称呼和把柄,但您的开拓小组确定领会。体例将封装所创造的表,以配合分子身份和脚色供给步调(这两者用来实行上述功效)的须要。但即使安置编写翻译本人的供给步调,您不妨运用其余表安排,并跳过这一步。身份处置您大概从咱们编写的、用来建立某些处置功效的代码中创造,对把柄保存的考察由分子身份和脚色供给步调举行处置。system.web.security 定名空间此刻囊括新的 sqlmembershipprovider 和 accessmembershipprovider 组件,以处置各自对默许把柄表的数据考察需要。默许情景下,machine.config 文献的 <membership> 元素囊括两个供给步调,辨别用来 sql server 数据库和 access 数据库。<providers> 节可用来增添或简略供给步调,这承诺您在运用步调级别简略那些默许的供给步调,并摆设本人的供给步调。从以次树立中不妨看到,有少许与引导创造的表构造径直关系的预订义树立,囊括暗号加密树立、暗号重设和检索树立、暗号题目及谜底的诉求树立,以及电子邮件字段输出实质的独一性树立。个中的每一项都由各自的默许分子身份(或数据库)供给步调来强迫实行,这使您不妨运用多种本领运用已封装的表构造,而不是经过创造本人的表和供给步调。您也不妨代替各个供给步调所用的贯穿字符串。<membership defaultprovider="aspnetaccessprovider" userisonlinetimewindow="15" > <providers> <add name="aspnetsqlprovider" type="system.web.security.sqlmembershipprovider, system.web, version=1.2.3400.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a" connectionstringname="localsqlserver" enablepasswordretrieval="false" enablepasswordreset="true" requiresquestionandanswer="false" applicationname="/" requiresuniqueemail="false" passwordformat="hashed" description="从当地 microsoft sql server 数据库中保存和检索分子身份数据" /> <add name="aspnetaccessprovider" type="system.web.security.accessmembershipprovider, system.web, version=1.2.3400.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a" connectionstringname="accessfilename" enablepasswordretrieval="false" enablepasswordreset="true" requiresquestionandanswer="false" applicationname="/" requiresuniqueemail="false" passwordformat="hashed" description="从当地 microsoft access 数据库中保存和检索分子身份数据" /> </providers> </membership>本质上,再有另一个分子身份供给步调组件 system.web.security.admembershipprovider。该组件对 active directory 保存实行上述同样的震动,但暂时这不过里面功效。<rolemanager> 节中的摆设树立不妨遏制运用何种数据保存来考察关系的脚色消息。默许情景下有三种摆设树立:sqlroleprovider、accessroleprovider 和 windowstokenroleprovider。那些组件用来处置用户一切的脚色处置。同样,将为 sql server 数据库和 access 数据库创造一组默许表,windowstokenroleprovider 挪用未托管的代码来考察为操纵体例把柄保存而设置的脚色。 <rolemanager enabled="false" cacherolesincookie="true" cookiename=".aspxroles" cookietimeout="30" cookiepath="/" cookierequiressl="false" cookieslidingexpiration="true" cookieprotection="all" defaultprovider="aspnetaccessprovider" > <providers> <add name="aspnetsqlprovider" type="system.web.security.sqlroleprovider, system.web, version=1.2.3400.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a" connectionstringname="localsqlserver" applicationname="/" description="从当地 microsoft sql server 数据库中保存和检索脚色数据" /> <add name="windowstoken" type="system.web.security.windowstokenroleprovider, system.web, version=1.2.3400.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a" description="从乞求的 windows 已考证令牌检索脚色数据" /> <add name="aspnetaccessprovider" type="system.web.security.accessroleprovider, system.web, version=1.2.3400.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a" connectionstringname="accessfilename" applicationname="/" description="从当地 microsoft access 数据库文献中保存和检索脚色数据" /> </providers> </rolemanager>固然此供给步调模子主中心在简化 web 运用步调的表单考证,但也可用来创造并处置用户和脚色的大肆考证计划,还可实行通用震动,如暗号重设、暗号加密和用户考证。总结asp.net whidbey 中的新组件和体制构造功效令人赞不绝口。新功效真实让人观赏之处在乎,您不妨简单地把百般功效拉拢在一道,建立成一个完备的运用步调,其余,对于须要具备可舒卷性的企业级运用步调,您不妨特殊简单地扩充那些功效。安定性也有了明显的巩固。运用新模子使咱们不妨和运用 xml 摆设文献开拓不幸的“演练代码”说再会(那些 xml 摆设文献生存未加密的把柄,并减少了效劳器的文献考察负载)。当截止日子邻近时,咱们常常浮夸刊行演练代码。干什么不在第一次就开拓出精确的代码呢?此刻独一缺点的是精神感触摆设启动步调,不妨将我的办法及时变换成代码。作家简介michele leroux bustamante 既是 idesign inc. 和 international .net speakers association (ineta) 的一位分子,也是 microsoft 的地域主管,同声,她仍旧一位公开拓表大作的撰稿人。在 idesign,michele 用本人充分的后台常识全力于 .net 培养和训练和高端的企业接洽。她重要接洽 c# 谈话、.net framework 体制框架结构、asp.net 和 web 效劳,同声还为本领主管供给引导。不妨经过这个地方:mlb@idesign.net 与她接洽,或考察 idesign:.net design and business solutions(英文)以赢得更多消息。其余,也不妨考察 .net dashboard(英文),订阅她的 .net 电子通信季刊。注:转贴者简单出于保藏手段转贴此文,也蓄意有须要的伙伴不妨瓜分此文为了表白作品的根源,不得不采用转贴,由于保藏不许证明

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.