UsersController.cs 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. using HaBookCms.Admin.Models;
  2. using HaBookCms.Common.CryptHelper;
  3. using HaBookCms.Jwt.Model;
  4. using Microsoft.AspNetCore.Authentication.JwtBearer;
  5. using Microsoft.AspNetCore.Authorization;
  6. using Microsoft.AspNetCore.Cors;
  7. using Microsoft.AspNetCore.Mvc;
  8. using System;
  9. using System.Collections.Generic;
  10. using System.Linq;
  11. using System.Security.Claims;
  12. using System.Threading.Tasks;
  13. namespace HaBookCms.Admin.Controllers.Sys
  14. {
  15. /// <summary>
  16. /// Blog控制器所有接口
  17. /// </summary>
  18. [Authorize(Policy = "RequireAdmin")]
  19. [Produces("application/json")]
  20. [Route("api/Users")]
  21. public class UsersController : Controller
  22. {
  23. PermissionRequirement _requirement;
  24. /// <summary>
  25. /// 获取JWT的方法 3.0
  26. /// </summary>
  27. /// <param name="name"></param>
  28. /// <param name="pass"></param>
  29. /// <returns></returns>
  30. [HttpPost]
  31. [Route("checkLogin")]
  32. [EnableCors("any")]
  33. [AllowAnonymous]
  34. public async Task<object> checkLogin(TicketInfo ticketInfo)
  35. {
  36. string jwtStr = string.Empty;
  37. bool suc = false;
  38. // var user = await sysUserInfoServices.GetUserRoleNameStr(name, pass);
  39. var user = "aaa";
  40. if (user != null)
  41. {
  42. //如果是基于用户的授权策略,这里要添加用户;如果是基于角色的授权策略,这里要添加角色
  43. var claims = new List<Claim> {
  44. new Claim(ClaimTypes.Name, ticketInfo.teamModelId),
  45. new Claim(ClaimTypes.Expiration, DateTime.Now.AddSeconds(_requirement.Expiration.TotalSeconds).ToString()) };
  46. claims.AddRange(user.Split(',').Select(s => new Claim(ClaimTypes.Role, s)));
  47. //用户标识
  48. var identity = new ClaimsIdentity(JwtBearerDefaults.AuthenticationScheme);
  49. identity.AddClaims(claims);
  50. var token = JwtToken.BuildJwtToken(claims.ToArray(), _requirement);
  51. return new JsonResult(token);
  52. }
  53. else
  54. {
  55. return new JsonResult(new
  56. {
  57. Status = false,
  58. Message = "认证失败"
  59. });
  60. }
  61. }
  62. private int CheckTicketInfo(TicketInfo ticketInfo) {
  63. if (ticketInfo != null
  64. &&!string.IsNullOrEmpty(ticketInfo.sign)
  65. && !string.IsNullOrEmpty(ticketInfo.ticket)
  66. && !string.IsNullOrEmpty(ticketInfo.teamModelId)){
  67. string md5info = Md5Crypt.GetMd5String(ticketInfo.ticket);
  68. if (md5info.Equals(ticketInfo.sign))
  69. {
  70. }
  71. }
  72. return 0;
  73. }
  74. }
  75. }