You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

33 lines
1.0 KiB

  1. using DotNetty.Codecs.Http;
  2. using JT1078.Gateway.Interfaces;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Security.Claims;
  7. using System.Security.Principal;
  8. using System.Text;
  9. namespace JT1078.Gateway.Http.Authorization
  10. {
  11. class JT1078AuthorizationDefault : IJT1078Authorization
  12. {
  13. public bool Authorization(IFullHttpRequest request, out IPrincipal principal)
  14. {
  15. var uriSpan = request.Uri.AsSpan();
  16. var uriParamStr = uriSpan.Slice(uriSpan.IndexOf('?')+1).ToString().ToLower();
  17. var uriParams = uriParamStr.Split('&');
  18. var tokenParam = uriParams.FirstOrDefault(m => m.Contains("token"));
  19. if (!string.IsNullOrEmpty(tokenParam))
  20. {
  21. principal = new ClaimsPrincipal(new GenericIdentity(tokenParam.Split('=')[1]));
  22. return true;
  23. }
  24. else
  25. {
  26. principal = null;
  27. return false;
  28. }
  29. }
  30. }
  31. }