OAuthSetup.cs 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. // 大名科技(天津)有限公司版权所有 电话:18020030720 QQ:515096995
  2. //
  3. // 此源代码遵循位于源代码树根目录中的 LICENSE 文件的许可证
  4. using Microsoft.AspNetCore.Authentication;
  5. using Microsoft.AspNetCore.Authentication.Cookies;
  6. using Microsoft.AspNetCore.Authentication.JwtBearer;
  7. using Microsoft.AspNetCore.Builder;
  8. namespace Admin.NET.Core;
  9. public static class OAuthSetup
  10. {
  11. /// <summary>
  12. /// 三方授权登录OAuth注册
  13. /// </summary>
  14. /// <param name="services"></param>
  15. public static void AddOAuth(this IServiceCollection services)
  16. {
  17. var authOpt = App.GetConfig<OAuthOptions>("OAuth", true);
  18. services.AddAuthentication(options =>
  19. {
  20. options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
  21. options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
  22. })
  23. .AddCookie(options =>
  24. {
  25. options.Cookie.SameSite = SameSiteMode.Lax;
  26. })
  27. .AddWeixin(options =>
  28. {
  29. options.ClientId = authOpt.Weixin?.ClientId;
  30. options.ClientSecret = authOpt.Weixin?.ClientSecret;
  31. })
  32. .AddGitee(options =>
  33. {
  34. options.ClientId = authOpt.Gitee?.ClientId;
  35. options.ClientSecret = authOpt.Gitee?.ClientSecret;
  36. options.ClaimActions.MapJsonKey(OAuthClaim.GiteeAvatarUrl, "avatar_url");
  37. });
  38. }
  39. public static void UseOAuth(this IApplicationBuilder app)
  40. {
  41. app.UseCookiePolicy(new CookiePolicyOptions { MinimumSameSitePolicy = SameSiteMode.Lax });
  42. }
  43. }