2.1.1编辑应用
程序的Web.config文件,以配置该应用程序的表单身份验证
〈authenticationmode="Forms"〉formsloginUrl="login.aspx"name="
sqlauthcookie"timeout="60"〈〈path=""〉forms〉〈authentication〉〈authorization〉denyusers="?"〉〈allowusers="3"〉!--允许所有用户--〉〈〈〈authorization〉2.1.2生成随机Salt值在表单验证文件的顶部引入以下两个命名空间
IportsSystem.Security.CryptographymIportsSystem.Web.SecuritymEndFunction
'使用加密技术生成的随机数PrivateFunctionCreateSalt(ByValsizeAsInteger)AsStringDimrngAsRNGCryptoServiceProvider=NewRNGCryptoServiceProvider()Dimbuff(size)AsByterng.GetBytes(buff)'返回与以64位数字为基组成的组等效的字符串,即随机数ReturnConvert.ToBase64String(buff)
2.1.3基于提供的密码和Salt值创建一个哈希值PrivateFunctionCreatePass
wordHash(ByValpwdAsString,ByValsaltAsString)AsStringDimsaltAndPwdAsString=String.Concat(pwd,salt)
DimhashedPwdAsString=(saltAndPwd,"SHA1")ReturnhashedPwd
EndFunction
FormsAuthentication.HashPasswordForStoringInConfigFile
1994-2010ChinaAcademicJournalElectronicPublishingHouse.Allrightsreserved.
http://www.cnki.net
第2期
姚争为:基于ASP.NET的科研管理系统
151
2.2在ASP.NET中使用存储过程
在ASP.NET中,可以使用ADO.NET完成存储过程∧DataSet在ADO.NET中用作数据容器,并在与数据库断开连接时使用∧DataSet包含一个或多个DataTable,每个DataTable都包含行集合∧对于那些熟悉传统ADO环境的用户来说,DataTable可被看作是断开连接的Recordset∧
DataTable,或将DataTable中的更改写回到数据库,或者二者兼而有之∧ataAdapter要求Command对象D
DataAdapter在连接到数据库时工作∧单个DataAdapter的作用是使用数据库中的数据填充某个
执行各种数据库操作∧Command对象存放SQL语句或指定数据访问实现方法的存储过程名称∧每个DataAdapter有四个属性,指定用于四种数据访问类型之一的命令对象∧·SelectCommand:此Command对象用于从数据库中选择数据;·UpdateCommand:此Command对象用于更新数据库中的现有记录;·InsertCommand:此Command对象用于向数据库中插入新记录;·DeleteCommand:此Command对象用于删除数据库中的现有记录∧但是使用DataAdapterConfigurationWizard在数据库中创建存储过程有一个不足之处:当用户向数据库中添加新记录时,系统不能自动生成主键(主键通常是按顺序分配的长整数)∧在科研管理系统中,如Thesis(论文)表,就要求使用Identity列自动创建新发表论文的I∧D为新记录设置主键有两种基本技术∧应用程序可调用生成下一个可用I的存储过程,然后将此I直接放到DataSet的新行中∧或DD
CREATEPROCEDUREdbo.MSDNInsertThesis(
者,用于插入记录的存储过程可以为记录派生新I,然后将其作为返D回值传递回应用程序∧第一种技术需要一点额外的逻辑来获取新I并将其放到新记D录的相应位置∧但第二种技术要求在存储过程中使用一种新型参数,ReturnValue参数∧因为存储过程为主键生成新值后,通常使用存储
过程中的RETURN语句返回该值∧ReturnValue参数与其他类型的参数有一个重要的区别∧通常,在ADO.NET中为Command对象配置的参数其顺序并不重要∧参数名称只用来与存储过程中相应的参数相匹配∧但是,对于图2用于访问存储过程的主要ADO.NET类以及它们之间的关系ReturnValue参数,它必须是
列表中的第一个参数∧