Авторизация и аутентификация с использованием jwt не работаютC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Авторизация и аутентификация с использованием jwt не работают

Сообщение Anonymous »

Я пытаюсь выполнить стандартную аутентификацию и авторизацию с помощью методов crud и слоев контроллера службы репозитория. Независимо от того, какое имя пользователя и пароль я указываю от БД, он всегда возвращает ошибку 401. Я не знаю, что еще попробовать или сделать. Я проверил каждую деталь несколько раз и не могу найти проблему.
REPOSITORY LAYER:METHOD
public async Task GetUserByUsernameAndPassword(string username, string password)
{
try
{
using var connection = new NpgsqlConnection(connectionString);
var commandText = "SELECT u.*, r.\"Name\" AS \"RoleName\" " +
"FROM \"User\" u " +
"JOIN \"Role\" r ON u.\"RoleId\" = r.\"Id\" " +
"WHERE u.\"Username\" = @username AND u.\"Password\" = @password";

using var command = new NpgsqlCommand(commandText, connection);
command.Parameters.AddWithValue("@username", username);
command.Parameters.AddWithValue("@password", password);

await connection.OpenAsync();
using var reader = await command.ExecuteReaderAsync();

if (reader.HasRows)
{
await reader.ReadAsync();
var user = new User
{
Id = Guid.Parse(reader["Id"].ToString()),
Username = reader["Username"].ToString(),
Email = reader["Email"].ToString(),
Password = reader["Password"].ToString(),
Role = new Role
{
Name = reader["RoleName"].ToString() // mapiranje
}
};
return user;
}
else
{
return null;
}
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
return null;
}
}

SERVICE LAYER:
public async Task LoginUser(string username, string password)
{

var user = await _repository.GetUserByUsernameAndPassword(username, password);
if (user == null)
{
return null;
}

return CreateToken(user);
}

public string CreateToken(User user)
{
var issuer = _config["JwtSettings:Issuer"];
var audience = _config["JwtSettings:Audience"];
var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config["JwtSettings:Key"]));

var claims = new List
{
new Claim(JwtRegisteredClaimNames.Sub, user.Id.ToString()),
new Claim(JwtRegisteredClaimNames.Name, user.Username),
new Claim(JwtRegisteredClaimNames.Email, user.Email),
new Claim(ClaimTypes.Role, user.Role.Name)
};

var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);

var tokenDescriptor = new SecurityTokenDescriptor
{
Subject = new ClaimsIdentity(claims),
Expires = DateTime.UtcNow.AddHours(1),
Issuer = issuer,
Audience = audience,
SigningCredentials = creds
};

var tokenHandler = new JwtSecurityTokenHandler();
var token = tokenHandler.CreateToken(tokenDescriptor);

return tokenHandler.WriteToken(token);
}
CONTROLLER:
[HttpPost]
[Route("login")]
public async Task Login(Login request)
{
var token = await _service.LoginUser(request.Username, request.Password);

if (token == null)
{
return Unauthorized();
}

return Ok(new { Token = token });
}



Подробнее здесь: https://stackoverflow.com/questions/789 ... ot-working
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Мне нужно интегрировать встроенные (авторизация и аутентификация услуг Weblogic (авторизация и аутентификация из веб -пр
    Anonymous » » в форуме JAVA
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Авторизация и аутентификация с использованием jwt не работают
    Anonymous » » в форуме C#
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Аутентификация/авторизация EntraId через .NET и React
    Anonymous » » в форуме C#
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Аутентификация/авторизация EntraId через .NET и React
    Anonymous » » в форуме C#
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Проблема с проектированием системы (аутентификация и авторизация)
    Anonymous » » в форуме JAVA
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»