using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using FAuth.Models; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using FAuth.DataBase.Tables; using Microsoft.AspNetCore.Mvc.ModelBinding; using FAuth.Extensions.Decryptor; namespace FAuth.Controllers.api { /// /// 用户相关api控制器接口 /// public class UserController:ApiControllerBase { public IUserTicketDryptor UserTicketDryptor { get; set; } public UserController(ILogger logger,IServiceProvider service,IUserTicketDryptor userTicketDryptor) : base(logger,service) { if(logger is null) throw new ArgumentNullException(nameof(logger)); if(service is null) throw new ArgumentNullException(nameof(service)); this.UserTicketDryptor = userTicketDryptor ?? throw new ArgumentNullException(nameof(userTicketDryptor)); } /// /// 验证用户名密码是否匹配 /// /// 用户名 /// 密码 /// 是否匹配 [HttpPost] [ProducesResponseType(typeof(CheckUserResult),200)] public CheckUserResult CheckUser(string userName,string password) { return new CheckUserResult { Result = userName == password, Ticket = this.UserTicketDryptor.Encrypt(new UserTicketModel { UserName = userName, }), }; } /// /// 根据用户凭据获取用户信息 /// /// 登录票据 /// 用户信息 [HttpPost] [ProducesResponseType(typeof(UserInfo),200)] public UserInfo GetUserByTicket([BindRequired]string ticket) { var userTicketModel = this.UserTicketDryptor.Decrypt(ticket); return new UserInfo { UserName = userTicketModel.UserName, }; } /// /// 根据提供的登陆票据修改用户密码 /// /// 票据 /// 新密码 /// 是否成功 [HttpPost] public bool ChangePassword(string ticket,string nPassword) { return true; } } }