Presupuesto de la documentation:
Por diseño, la clase SimpleMembershipProvider no implementa la gama completa de funcionalidad que es posible en la suscripción de ASP.NET proveedores, como se define en la clase que se utiliza MembershipProvider por todos los proveedores de membresía de ASP.NET. Algunos miembros están disponibles en la clase porque se heredan de la clase base, pero lanzarán una excepción al si accede a ellos.
Si su sitio web requiere la plena capacidad del proveedor de pertenencia, se puede saltar la inicialización del sistema de suscripciones de páginas web (es es decir, no llame WebSecurity.InitializeDatabaseConnection()) y lugar asegurarse de que el número de miembros y el papel estándar los proveedores están habilitados . En ese caso, las llamadas que realice a la clase SimpleMembershipProvider se pasan al proveedor estándar (que se conoce como el proveedor anterior en la documentación de la clase SimpleMembershipProvider ). Para obtener más información, vea Configurar una aplicación ASP.NET para usar membresía.
El campo PasswordSalt
es una de esas columnas. Si nos fijamos en el código fuente de la SimpleMembershipProvider se dará cuenta de que la columna de PasswordSalt se establece simplemente para string.Empty
:
if (database.Execute("INSERT INTO [" + MembershipTableName + "] (UserId, [Password], PasswordSalt, IsConfirmed, ConfirmationToken, CreateDate, PasswordChangedDate, PasswordFailuresSinceLastSuccess) VALUES (@0, @1, @2, @3, @4, @5, @5, @6)", new object[] { num, str, string.Empty, !requireConfirmationToken, obj3, DateTime.UtcNow, num2 }) != 1)
{
throw new MembershipCreateUserException(MembershipCreateStatus.ProviderError);
}
Así que si usted quiere usarlo se podría escribir un proveedor de suscripciones personalizado que anula la opción por defecto y genere PasswordSalt usted mismo. Puede anular el método CreateAccount
.
Hmm, entonces ¿por qué hay una columna de sal?Si la columna de sal es útil, ¿cuáles son los posibles escenarios que podemos hacer? – jonprasetyo
@jonprasetyo No lo sé. Mi mejor opción es que fue traída a través de los esquemas de proveedores anteriores y no se eliminó cuando se tomó la decisión de integrar la sal con el hash y almacenarla en un solo lugar. –