using IM_API.Dtos; using IM_API.Interface.Services; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; namespace IM_API.Controllers { [Route("api/[controller]/[action]")] [ApiController] public class AuthController : ControllerBase { private readonly ILogger _logger; private readonly IAuthService _authService; private readonly IJWTService _jwtService; private readonly IRefreshTokenService _refreshTokenService; private readonly IConfiguration _configuration; public AuthController(ILogger logger, IAuthService authService, IJWTService jwtService, IRefreshTokenService refreshTokenService, IConfiguration configuration) { _logger = logger; _authService = authService; _jwtService = jwtService; _refreshTokenService = refreshTokenService; _configuration = configuration; } [HttpPost] public async Task Login(LoginRequestDto dto) { var user = await _authService.LoginAsync(dto); //生成凭证 (string token,DateTime expiresAt) = _jwtService.CreateAccessTokenForUser(user.Id,user.Username,"user"); //生成刷新凭证 string refreshToken = await _refreshTokenService.CreateRefreshTokenAsync(user.Id); var res = new BaseResponse(new LoginDto(user.Id,token,refreshToken,expiresAt)); return Ok(res); } } }