コード例 #1
0
        public Player GetPlayerByLogin(string name, string password)
        {
            var connection = _databaseService.GetConnection();
            var data       = connection.QueryFirstOrDefault <UserAuthentication>(
                "SELECT id, hash FROM players WHERE name = @name",
                new {
                name
            });

            connection.Close();

            if (data == null)
            {
                return(null);
            }

            var playerId   = data.Id;
            var playerHash = data.Hash;

            if (!Pbkdf2.ValidatePassword(password, playerHash))
            {
                return(null);
            }

            var iterations = Pbkdf2.GetHashIterations(playerHash);

            if (iterations != Pbkdf2.Pbkdf2Iterations)
            {
                var hash = Pbkdf2.HashPassword(password);
                UpdateHash(playerId, hash);
            }

            return(GetPlayerById(playerId));
        }