/
idalynnn
/
api
Обзор
Документация
Войти
/
idalynnn
/
api
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Controllers/AuthController.cs
53 строки
2 KB
idalynnn
init
13 дек 2025, 05:34
13 дек 2025, 05:34
44c310a
Код
Авторство
О чём код?
using System.IdentityModel.Tokens.Jwt; using System.Security.Claims; using System.Text; using Microsoft.AspNetCore.Mvc; using Microsoft.IdentityModel.Tokens; using TaskTrackerApi.Dtos; namespace TaskTrackerApi.Controllers; [ApiController] [Route("api/auth")] public class AuthController : ControllerBase { private readonly IConfiguration _config; public AuthController(IConfiguration config) => _config = config; /// <summary> /// Issues JWT token (demo login). /// </summary> [HttpPost("token")] public IActionResult Token([FromBody] LoginRequest req) { // Simple demo credentials for lab. if (req.Username != "admin" || req.Password != "admin") return Unauthorized(new { message = "Invalid credentials" }); var jwt = _config.GetSection("Jwt"); var issuer = jwt["Issuer"]!; var audience = jwt["Audience"]!; var key = jwt["Key"]!; var signingKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(key)); var creds = new SigningCredentials(signingKey, SecurityAlgorithms.HmacSha256); var claims = new[] { new Claim(ClaimTypes.Name, req.Username), new Claim(ClaimTypes.Role, "Admin") }; var token = new JwtSecurityToken( issuer: issuer, audience: audience, claims: claims, expires: DateTime.UtcNow.AddHours(2), signingCredentials: creds ); var tokenString = new JwtSecurityTokenHandler().WriteToken(token); return Ok(new TokenResponse(tokenString, "Bearer", 7200)); } }