BaseController.cs 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. using Microsoft.AspNetCore.Http;
  2. using Microsoft.AspNetCore.Mvc;
  3. using System.Collections.Generic;
  4. using TEAMModelOS.SDK.Extension.JwtAuth.JwtHelper;
  5. using TEAMModelOS.SDK.Extension.JwtAuth.Models;
  6. using TEAMModelOS.SDK.Context.Constant.Common;
  7. using System.Security.Claims;
  8. using TEAMModelOS.Service.Models;
  9. using TEAMModelOS.SDK.Helper.Security.ShaHash;
  10. using System.IdentityModel.Tokens.Jwt;
  11. using Microsoft.IdentityModel.Tokens;
  12. using System.Text;
  13. using System;
  14. using System.Diagnostics;
  15. namespace TEAMModelOS.Controllers
  16. {
  17. public class BaseController : Controller
  18. {
  19. public List<string> GetLoginUser(string claimType)
  20. {
  21. var tokenHeader = "";
  22. HttpRequest request = HttpContext.Request;
  23. if (request.Headers.ContainsKey(Constants.AUTHORIZATION))
  24. {
  25. tokenHeader = request.Headers[Constants.AUTHORIZATION];
  26. //tokenHeader = tokenHeader.ToString().Substring("Bearer ".Length).Trim();
  27. tokenHeader = tokenHeader.Replace("Bearer ", "");
  28. }
  29. if (request.Query.ContainsKey(Constants.ACCESS_TOKEN))
  30. {
  31. tokenHeader = request.Query[Constants.ACCESS_TOKEN];
  32. tokenHeader = tokenHeader.Trim();
  33. }
  34. if (string.IsNullOrEmpty(tokenHeader))
  35. {
  36. return null;
  37. }
  38. ClaimModel claimModel = JwtHelper.SerializeJWT(tokenHeader);
  39. claimModel.Claim.TryGetValue(claimType, out var claimValue);
  40. List<string> claimValues = new List<string>();
  41. foreach (Claim claim in claimModel.Claims)
  42. {
  43. if (claim.Type.Equals(claimType))
  44. {
  45. claimValues.Add(claim.Value);
  46. }
  47. }
  48. return claimValues;
  49. }
  50. public static bool ValidateIdToken(string token, string salt)
  51. {
  52. try
  53. {
  54. var handler = new JwtSecurityTokenHandler();
  55. var validationParameters = new TokenValidationParameters
  56. {
  57. RequireExpirationTime = true,
  58. ValidateIssuer = false,
  59. ValidateAudience = false,
  60. IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(salt)),
  61. ValidateLifetime = false,
  62. //LifetimeValidator = LifetimeValidator,
  63. ClockSkew = TimeSpan.Zero
  64. };
  65. ClaimsPrincipal principal = handler.ValidateToken(token, validationParameters, out SecurityToken securityToken);
  66. return true;
  67. }
  68. catch (Exception ex)
  69. {
  70. Trace.WriteLine(ex.Message);
  71. return false;
  72. }
  73. }
  74. }
  75. }