Итак, я создал страницу регистрации, в которую войдут ваше имя, фамилия, адрес электронной почты и пароль, и он будет сохранен в моей базе данных,
ALTER PROCEDURE [dbo].[Register_User]
@FirstName NVARCHAR(100),
@LastName NVARCHAR(100),
@Password NVARCHAR(MAX),
@Email NVARCHAR(100),
@Id INT OUTPUT
AS
INSERT INTO UserFromFrontEnd
(FirstName, LastName, [Password], Email)
VALUES
(@FirstName, @LastName, @Password, @Email)
SET @Id = SCOPE_IDENTITY()
и в Visual Studios я создал этот метод
public int Register(RegisterRequest model)
{
int newId = 0;
string pwdToHash = model.Password + "^Y8~JJ";
string hashToStoreInDatabase = BCrypt.Net.BCrypt.HashPassword(pwdToHash, BCrypt.Net.BCrypt.GenerateSalt());
_dataProvider.ExecuteNonQuery(
"Register_User",
(parameters) =>
{
parameters.AddWithValue("@FirstName", model.FirstName);
parameters.AddWithValue("@LastName", model.LastName);
parameters.AddWithValue("@Email", model.Email);
parameters.AddWithValue("@Password", hashToStoreInDatabase);
parameters.Add("@Id", SqlDbType.Int).Direction = ParameterDirection.Output;
},
(parameters) =>
{
newId = (int)parameters["@Id"].Value;
}
);
return newId;
}
этот метод берет входные данные из внешнего интерфейса и сохраняет их в моей базе данных, в то же время хешируя пароль с помощью Bcrypt.Net-Next
Теперь я создал процедуру входа, которая как таковая
ALTER PROCEDURE [dbo].[LoginFromFrontEnd]
@Email NVARCHAR(100),
@Password NVARCHAR(100)
AS
SELECT Email, [Password]
FROM
UserFromFrontEnd
WHERE
Email=@Email AND [Password]=@Password
сейчас я пытаюсь создать метод входа в систему
public string Login(LoginUser model)
{
_dataProvider.ExecuteCmd(
"LoginFromFrontEnd",
(parameters) =>
{
parameters.AddWithValue("@Email", model.Email);
},
(reader, recordSetIndex) =>
{
LoginUser _login = Mapper(reader);
}
);
}
private LoginUser Mapper(IDataReader reader)
{
LoginUser login = new LoginUser();
login.Email = reader["Email"] as string;
login.Password = reader["Password"] as string;
return login;
}
но я не уверен, как сначала разблокировать пароль, а затем проверить, совпадает ли он с моим в базе данных