Попытка создать метод входа в систему, но пароль в моей базе данных MySql хешируется, также используя самодельный dataProvider в C # - PullRequest
0 голосов
/ 25 января 2019

Итак, я создал страницу регистрации, в которую войдут ваше имя, фамилия, адрес электронной почты и пароль, и он будет сохранен в моей базе данных,

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;
        }

но я не уверен, как сначала разблокировать пароль, а затем проверить, совпадает ли он с моим в базе данных

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...