GVKun编程网logo

asp.net – 从SqlMembershipProvider迁移到自定义提供程序(sqlserver迁移到mysql)

11

对于asp.net–从SqlMembershipProvider迁移到自定义提供程序感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解sqlserver迁移到mysql,并且为您提供关于.ne

对于asp.net – 从SqlMembershipProvider迁移到自定义提供程序感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解sqlserver迁移到mysql,并且为您提供关于.net – SqlMembershipProvider与自定义解决方案、.net – 为MembershipProvider添加额外的属性、.net4.0开发支持MySql的Membership时遇到找不到MembershipProvid、ASP.NET MembershipProvider加密/解密的宝贵知识。

本文目录一览:

asp.net – 从SqlMembershipProvider迁移到自定义提供程序(sqlserver迁移到mysql)

asp.net – 从SqlMembershipProvider迁移到自定义提供程序(sqlserver迁移到mysql)

这是场景:
我使用默认的sqlMembershipProvider在网站上实现membershp.现在我想迁移到我的自定义成员资格提供程序. (仅供参考我使用的提供是 CodeFirst Membership Provider.
问题是,提供程序使用自定义加密/哈希算法在db中存储密码,我不想为每个用户生成新密码并向他们发送新密码.

如何在我的提供程序中实现默认成员资格密码哈希/加密.我使用了reflector / googled并尝试了以下代码,它似乎是sqlMembershipProvider中的默认实现:

internal static string GenerateSalt()
{
    byte[] buf = new byte[16];
    (new RNGCryptoServiceProvider()).GetBytes(buf);
    return Convert.ToBase64String(buf);
}

internal string EncodePassword(string pass,string salt)
{
    byte[] bIn = Encoding.Unicode.GetBytes(pass);
    byte[] bSalt = Convert.FromBase64String(salt);
    byte[] bAll = new byte[bSalt.Length + bIn.Length];
    byte[] bRet = null;
    Buffer.Blockcopy(bSalt,bAll,bSalt.Length);
    Buffer.Blockcopy(bIn,bSalt.Length,bIn.Length);
   HashAlgorithm s = HashAlgorithm.Create("SHA1");
   bRet = s.ComputeHash(bAll);
   return Convert.ToBase64String(bRet);
}

并在我的ValidateUser方法中使用它:

string salt = GenerateSalt();
  string pass = EncodePassword(enteredPassword,salt);
  bool verificationSucceeded = pass == user.Password;

但是,从EncodePassword返回的传递与默认sqlMembershipProvider在切换到自定义成员资格之前放入数据库的传递不同.如何实现像Default sqlMembershipProvider这样的确切密码验证/生成?

注意:由于我没有在web.config中定义任何machinekey,我确定默认提供程序使用Hashed Password Format,而不是Encrypted或Clear.

谢谢.

解决方法

找到解决方案:

在ValidateUser方法中,我们必须从aspnet_Membership表中获取PasswordSalt,而不是生成它!

假的问题. :|

.net – SqlMembershipProvider与自定义解决方案

.net – SqlMembershipProvider与自定义解决方案

我在一个小型的开发人员团队中工作,对于完成一系列核心任务的最佳方法没有达成共识,其中一个是会员提供者.现在我无法确定这是否与缺乏其他思维方式或足够规模的项目有关,需要进行重大调查.

多年来我一直是.net网络开发人员(之前是PHP和asp经典),通常在开发应用程序时,我回避使用内置的.net sqlMembershipProvider主要是因为它经常看起来非常复杂,因为我的需求,其次是因为我只能想象这样一个复杂的数据模型可能会受到性能影响.

通常,我使用在相当简单的用户上操作的自定义成员资格和角色提供程序 – >用户角色< - 角色类型架构.我维护标准的成员资格提供程序功能,例如帐户恢复,配置文件详细信息,失败的登录帐户锁定,机密问题等,具体取决于相关应用程序的需求,例如AD安全应用程序几乎没有其他功能,面向公众的应用程序通常会有商场.它还意味着,如果出现任何需要存储过程来咀嚼用户数据的任务,那么它们很容易编写并且执行得非常好.直接的sql命令,良好的索引和简单的数据模型,产生了一个高性能,可扩展的解决方案,需要改变我有完全的控制权,可以根据需要进行更改,这是我认为非常宝贵的. 根据您的经验,您会说这是一种过时的方法吗?您是否曾在内置提供程序中遇到任何可伸缩性问题?您通常采取什么方法以及在什么情况下? 谢谢

解决方法

除非你特别指出了令人信服的理由,否则我建议你从sqlMembershipProvider开始,并根据需要进行调整.

我们发现内置的提供商为我们提供了所有基础知识,而我们几乎没有任何工作.开发一个良好的安全结构有很多元素,很容易忘记其中一个,或者只是为了变得懒惰,而不是在你自己滚动时以“正确”的方式实现一个.我想到了通过电子邮件密码和密码重置等问题.

当然,sqlMembershipProvider并不是神奇的子弹.我们有一些情况需要做一些更复杂的身份验证.但我们只能通过扩展sqlMembershipProvider而不是替换它来解决这些问题.有关详细信息,请参阅What is a good way to extend .Net Membership to track user logins的答案.

我们没有注意到sqlMembershipProvider产生的任何重大性能问题,所以我认为播放性能卡是没有根据的.毕竟,您的用户通常花多少时间登录系统?如果您的所有页面加载速度很快,那么根据您可能会提高性能的(可能是错误的)想法编写所有自己的代码并没有真正的理由.这是我们一直在阅读的可怕的“过早优化”.

角色框架对我们的需求来说太简单了,所以我们根本不使用它.但它也没有妨碍.

而且,正如Hogan指出的那样,你更有可能找到已经熟悉内置提供程序工作方式的开发人员,这意味着他们将花费更少的时间来弄清楚你的架构和(希望)更多的时间完成真正的工作.

.net – 为MembershipProvider添加额外的属性

.net – 为MembershipProvider添加额外的属性

我正在使用sqlMemberShipProvider,它运行良好,但我希望MembershipUser有一些额外的属性,如FirstName,LastName,Phone Number等.最好的方法是什么?我是否必须创建自定义成员资格提供程序,或者是否有更好的方法向用户添加其他功能?

解决方法

有关用户的其他信息正是070​​00的用途.您可以在web.config文件中指定您想要的额外属性和默认提供程序(如果您将继续使用当前使用的sql,则为 SqlProfileProvider)将为您处理持久性.

这是how to build the sample的链接.

.net4.0开发支持MySql的Membership时遇到找不到MembershipProvid

.net4.0开发支持MySql的Membership时遇到找不到MembershipProvid

在.net4.0中使用system.web.security.membershipprovider类时,必须引用: ''System.Web.dll'' ''System.Web.ApplicationServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35''. 否则提示找不到MembershipProvider类。 解决了这个问题

在.net4.0中使用system.web.security.membershipprovider类时,必须引用:

''System.Web.dll'' 

''System.Web.ApplicationServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35''.

否则提示找不到MembershipProvider类。

 

解决了这个问题,终于可以尝试一下Membership连接MySql数据库,呵呵。

ASP.NET MembershipProvider加密/解密

ASP.NET MembershipProvider加密/解密

我对.Net中的MembershipProvider有一些问题,我一直无法找到明确的答案.

>使用什么类型的加密,AES?
>方法EncryptPassword,它可以处理任何盐,或者我只是在传递它之前添加它?
>方法DecryptPassword – 你能真正解密密码吗?难道这不是一个糟糕的做法吗?

谢谢你的反馈!

解决方法

add Element for providers for membership (ASP.NET Settings Schema)

> enablePasswordRetrieval属性:“指定成员资格提供程序实例是否支持密码检索.如果为true,则成员资格提供程序实例支持密码检索sql和Active Directory提供程序的缺省值均为false.”
> passwordFormat属性:“MembershipPasswordFormat值之一,指示在成员资格数据存储中存储密码的格式.默认值为Hashed.”

>哈希:“使用SHA1哈希算法对密码进行单向加密.
您可以使用hashAlgorithmType属性指定与SHA1算法不同的散列算法.“
>加密:“加密密码使用machineKey元素(ASP.NET设置架构)元素配置确定的加密设置进行加密.”

因此,默认情况下,sqlMembershipProvider使用与SHA1进行哈希处理的散列(单向)密码.散列密码不会使用EncryptPassword / DecryptPasswords方法,但是不能,您不能手动将盐传递给密码的加密/编码(它会为您提供密码).

我们今天的关于asp.net – 从SqlMembershipProvider迁移到自定义提供程序sqlserver迁移到mysql的分享就到这里,谢谢您的阅读,如果想了解更多关于.net – SqlMembershipProvider与自定义解决方案、.net – 为MembershipProvider添加额外的属性、.net4.0开发支持MySql的Membership时遇到找不到MembershipProvid、ASP.NET MembershipProvider加密/解密的相关信息,可以在本站进行搜索。

本文标签: