|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
数据库有很多应用领域,但是如果你单单学数据库的话基本上做数据库管理员比较合适而已,跟领域结合的你还得再学习那些领域知识。(其实数据挖掘我真是不懂,本来这学期开了一门课了。asp.net|平安 浏览提纲在缺省情况下,你只能利用VisualStudio2005的一个本机实例来办理与ASP.NET2.0一同刊行的SQLServer数据库中的平安凭据。本文将向你展现如何用一个Web服务来包装ASP.NET2.0供应者并经由过程利用一个Windows表单使用程序来办理凭据存储从而扩大这类办理才能。
现在,不管是互联网仍是企业外部局域网程序一样平常都请求利用定制的体例来存储和办理用户帐户和脚色。为此,ASP.NET2.0供应了一个现成的供应者模子和一个SQLSever数据库。不幸的是,只能经由过程VisualStudio2005来办理该凭据数据库且只能针对本机Web使用程序。这无疑长短常不便利并且不克不及普遍利用的。
本文形貌了一个超等用户可使用的完整定制的平安办理使用程序。这个使用程序经由过程用一个WEB服务对ASP.NET2.0供应者举行了包装并增添了一些功效。本文具体形貌了个中的计划办法,面对的成绩和包括在使用程序中的手艺。同时还向你先容了一些有效而强无力的手艺,如基于接口的Web服务,基于反射的Web服务兼容性,初级C#2.0编程,Web服务平安性和Web服务事件等。
1、ASP.NET2.0凭据基本布局
基于互联网的使用程序经常不依附Windows帐户和组,而是依附于基于表单的认证并分离某种如SQLServer的背景定制凭据存储。为了匡助开辟者免去反复计划和构建如许的办理计划,ASP.NET2.0刊行中到场了一个现成的平安凭据基本布局。ASP.NET2.0凭据存储其实不仅可用于ASP.NET使用程序,并且ASP.NETWeb服务和Windows表单使用程序都能利用它来办理它们的用户凭据。别的,Windows通信基本(编码名为Indigo)服务也能被简单地设置来利用ASP.NET2.0平安凭据存储。
ASP.NET2.0利用一供应者模子来会见和办理凭据以免把使用程序耦合就任何特定存储上。在使用笼统供应者模子的长处的同时由程序员来开辟这个使用程序。超等用户卖力选择和办理特定的凭据存储。显现出ASP.NET2.0平安供应者的架构。
.ASP.NET2.0平安供应者模子
MembershipProvider卖力办理用户,而RoleProvider卖力办理脚色。在凭据存储中,每一个用户或脚色仅限于一使用程序以内。如许就同意分歧使用程序利用一样的凭据存储而不会与相互的用户名或脚色相抵触。ASP.NET为SQL服务器、Windows和举动目次(见)等的凭据存储供应撑持。为了安装SQLServer凭据数据库,能够运转aspnet_regsql.exe程序,其地位是:
<WINDOWS>Microsoft.NETFramework<version>
这个安装程序创立一个称为aspnetdb的新数据库-它包括一组使用程序的表、用户、脚色和存取这些表的存储历程。这个SQLServer数据库是使用最新的平安手艺经由经心计划的。别的,ASP.NET2.0还供应一套响应于供应者的类()。
利用哪一个供应者的信息被保留在使用程序的设置文件(App.Config或Web.Config)中。你几近不必要间接与特定的供应者举行交互;而是,存在两个静态助理类:Membership和Roles-它们卖力从设置文件中读取利用哪一个供应者。默许的供应者(即当没有指定供应者时)就是SQLServer。Membership类(列表1)同意你创立和删除用户,检索关于用户的信息并寓目口令战略。
列表1:Membership助理类
[Serializable]
publicclassMembershipUser{
publicvirtualboolChangePassword(stringoldPassword,stringnewPassword);
publicvirtualstringGetPassword(stringpasswordAnswer);
publicvirtualstringResetPassword(stringpasswordAnswer);
publicvirtualboolUnlockUser();
//别的成员
}
publicstaticclassMembership{
publicstaticstringApplicationName{get;set;}
publicstaticMembershipUserCreateUser(stringusername,stringpassword);
publicstaticMembershipUserCreateUser(stringusername,
stringpassword,stringemail,stringpasswordQuestion,
stringpasswordAnswer,boolisApproved,outMembershipCreateStatusstatus);
publicstaticboolDeleteUser(stringusername,booldeleteAllRelatedData);
publicstaticMembershipUserGetUser(stringusername);
publicstaticvoidUpdateUser(MembershipUseruser);
publicstaticboolValidateUser(stringusername,stringpassword);
publicstaticboolEnablePasswordReset{get;}
publicstaticboolEnablePasswordRetrieval{get;}
//别的成员
}
比方,为了在"MyApp"使用程序中创立一新用户,你仅需以下编码:
Membership.ApplicationName="MyApp";
Membership.CreateUser("MyUser","MyPassword",...);
Roles类同意你创立和删除用户脚色,从脚色中增加或删除用户,检索用户的脚色会员信息和考证脚色会员。上面是该类的界说:
publicstaticclassRoles{
publicstaticstringApplicationName{get;set;}
publicstaticvoidCreateRole(stringroleName);
publicstaticboolDeleteRole(stringroleName,boolthrowOnPopulatedRole);
publicstaticvoidAddUserToRole(stringusername,stringroleName);
publicstaticvoidRemoveUserFromRole(stringusername,stringroleName);
publicstaticstring[]GetAllRoles();
publicstaticstring[]GetRolesForUser(stringusername);
publicstaticstring[]GetUsersInRole(stringroleName);
publicstaticboolIsUserInRole(stringusername,stringroleName);
//别的成员
}
比方,要把脚色"Manager"增加到使用程序"MyApp"上,你能够以下编码:
Roles.ApplicationName="MyApp";
Roles.CreateRole("Manager");
2、办理凭据存储
假如你选择利用Windows或举动目次来存储你的使用程序的用户和脚色,那末你必要利用响应于这些存储的工具来办理,比方盘算机把持面板小程序或举动目次工具。实在,真实的成绩在于怎样办理存储在SQLServer中的凭据。为此,你可使用VisualStudio2005和一个Web扫瞄器,乃至不必要安装IIS。在一ASP.NETWeb工程中,从"Website"菜单下选择"ASP.NET设置"。这将使得VisualStudio宿主一个Web服务器,翻开一可用的端口而且导航到一套办理页面(见)。这些办理页面修正该Web使用程序设置文件而且也能够办理凭据存储(当不选择Windows认证时)。当利用VisualStudio2005时,你起首必要选择认证范例。你能够选择Windows或表单认证(互联网存取)。假如你选择表单认证,你还能够实行以下操纵:
・启动或作废基于脚色的平安
・创立和删除脚色
・创立和删除用户
・检索一用户的细节
・设置一用户的形态
・给用户赋于某脚色
・从脚色中删除用户
.ASP.NETWeb使用程序办理页面
既然SQLServer是ASP.NET2.0供应的独一的企业级定制凭据存储,你能够独自利用VisualStudio2005驱动的办理页面来办理aspnetdb数据库,而不必任何别的存储。
3、内置功效的不敷
关于VisualStudio2005驱动的办理页面存在一些主要弱点:第一,你必要VisualStudio2005。使用程序或体系超等用户大概没有VisualStudio2005,更不必说怎样利用它了。缺省地,该办理页面利用一斜杠(/)来办理使用程序定名,而且没供应任何修正办法。第二,不成能存在远程存取-使用程序和VisualStudio2005必需共存,如许VisualStudio2005才干存取使用程序的设置文件。第三,基于扫瞄器的用户接口也不很友爱-你必要不休点击Back按钮,并且用户接口反应相称愚钝。别的,很多超等用户大概想利用的特性没法经过页面办理来完成,这就离开了底层供应者类所撑持的特征这一现实。这类体例还不克不及完成的方面有:
・更新年夜多半用户帐户细节
・检索、改动、重置一用户的口令
・检索以后在线用户数量信息
・可以从一次操纵的一个脚色中删除全体用户
・检索关于口令办理战略(比方长度、重置战略、口令范例等)的信息
・测试用户凭据
・考证用户脚色身份
并且,另有别的的超等用户大概想要的特性也得不到撑持。这些特性包含可以检索数据库一切使用程序列表,可以从一使用程序中删除一切的用户,可以从一使用程序中删除一切的脚色,可以删除一使用程序(和它的一切相接洽的用户和脚色),可以删除一切的使用程序。总之,只管ASP.NET2.0供应了一个最高级的周全的凭据办理,但是它仅供应了一些原始的办理选项,一样平常的实践超等用户是不会利用它的。
.凭据办理器使用程序的一个快照
这统统促使我本人来开辟一个定制的客户端凭据办理器使用程序来填补这些不敷。显现该程序的一个快照。前面的部分将先容我是怎样计划和构建该凭据办理器的。感觉很多控件都必须自己去写代码;用了WebMatrix感觉也不是很好,毕竟没有很强的WYSIWYG效果。现在就不知道如何是好了。 |
|