asp.net – 创建密码和密码
我有一个包含100个用户和密码的现有表.数据类型是varchar.
我刚刚创建了一个asp.net mvc应用程序,我想将密码转换为aspnet_membership表. 如何在SQL级别上将varchar密码转换为aspnet_membership表中的“Password”和“Passwordsalt”? 解决方法
密码& PasswordSalt部件未在“SQL级别”处理和创建
如果仔细查看asp.net成员资格数据库 – 表/存储过程/其他对象.然后你会发现有两个存储过程(简称sp)在asp.net成员数据库表中创建User. > aspnet_Membership_CreateUser 这些sps将在aspnet_Membership& aspnet_Users表分别. ???? <authentication mode="Forms"> // If you are using Form authentication <forms loginUrl="~/Account/Login.aspx" timeout="2880" /> </authentication> <membership> <providers> <clear/> <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" passwordFormat="Encrypted" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" /> </providers> </membership> 在此设置部分中,属性“passwordFormat”设置用户密码的存储方式. 默认情况下,它将具有散列值 – 或者如果您未指定passwordFormat. 在明文中,密码将保存为 – 文本清晰 – 可读. 使用Hashed选项,密码不会(加密),只能使用Hashing算法进行编码 使用“加密”选项,密码将被加密,然后进行编码. 加密选项u指定非自动生成的“机器密钥” 密码盐是一个随机生成的字符串,用于加密和编码密码以及验证和密码.解密密钥. 如果你想覆盖asp.net会员提供者的加密方法并编码自己,(如果使用的是自定义会员提供者),你可以这样做: private string EncodePassword(byte passFormat,string passtext,string passwordSalt) { if(passFormat.Equals(0)) // passwordFormat="Clear" (0) return passtext; else{ byte[] bytePASS = Encoding.Unicode.GetBytes(passtext); byte[] byteSALT = Convert.FromBase64String(passwordSalt); byte[] byteRESULT = new byte[byteSALT.Length + bytePASS.Length + 1]; System.Buffer.BlockCopy(byteSALT,byteRESULT,byteSALT.Length); System.Buffer.BlockCopy(bytePASS,byteSALT.Length,bytePASS.Length); if(passFormat.Equals(1)) // passwordFormat="Hashed" (1) { HashAlgorithm ha = HashAlgorithm.Create(Membership.HashAlgorithmType); return (Convert.ToBase64String(ha.ComputeHash(byteRESULT))); } else // passwordFormat="Encrypted" (2) { MyCustomMembership myObj = new MyCustomMembership(); return(Convert.ToBase64String(myObj.EncryptPassword(byteRESULT))); } } } 用法示例: string passSalt = // Either generate a random salt for that user,or retrieve the salt from database if the user is in edit and has a password salt EncodePassword(/* 0 or 1 or 2 */,passwordText,passSalt); 我希望这有帮助. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – Visual Studio不允许在MVC视图中使用断点
- asp.net-mvc – MVC:如何将文件上传和其他表单字段发布到一
- ASP.NET MVC 使用Spring.NET 依赖注入
- asp.net – 使用IIS7应用程序请求路由修改标头
- npm不包含在ASP.NET Core Web Application中
- asp.net-mvc – 所有请求获取HTTP错误401.2 – 未经授权的响
- 有没有办法为ASP.Net Web应用程序安装程序创建补丁?
- asp.net – 最早我可以访问global.asax中的一些Session数据
- 在ASP.NET Identity 2.0.0-beta1中禁用双因素身份验证
- asp.net – 如何在服务器端杀死.ASPXAUTH cookie?