OAuthSetup.cs 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. // 大名科技(天津)有限公司 版权所有
  2. //
  3. // 此源代码遵循位于源代码树根目录中的 LICENSE 文件的许可证
  4. //
  5. // 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动
  6. //
  7. // 任何基于本项目二次开发而产生的一切法律纠纷和责任,均与作者无关
  8. using Microsoft.AspNetCore.Authentication;
  9. using Microsoft.AspNetCore.Authentication.Cookies;
  10. using Microsoft.AspNetCore.Authentication.JwtBearer;
  11. using Microsoft.AspNetCore.Builder;
  12. namespace Admin.NET.Core;
  13. public static class OAuthSetup
  14. {
  15. /// <summary>
  16. /// 三方授权登录OAuth注册
  17. /// </summary>
  18. /// <param name="services"></param>
  19. public static void AddOAuth(this IServiceCollection services)
  20. {
  21. var authOpt = App.GetConfig<OAuthOptions>("OAuth", true);
  22. services.AddAuthentication(options =>
  23. {
  24. options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
  25. options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
  26. })
  27. .AddCookie(options =>
  28. {
  29. options.Cookie.SameSite = SameSiteMode.Lax;
  30. })
  31. .AddWeixin(options =>
  32. {
  33. options.ClientId = authOpt.Weixin?.ClientId;
  34. options.ClientSecret = authOpt.Weixin?.ClientSecret;
  35. })
  36. .AddGitee(options =>
  37. {
  38. options.ClientId = authOpt.Gitee?.ClientId;
  39. options.ClientSecret = authOpt.Gitee?.ClientSecret;
  40. options.ClaimActions.MapJsonKey(OAuthClaim.GiteeAvatarUrl, "avatar_url");
  41. });
  42. }
  43. public static void UseOAuth(this IApplicationBuilder app)
  44. {
  45. app.UseCookiePolicy(new CookiePolicyOptions { MinimumSameSitePolicy = SameSiteMode.Lax });
  46. }
  47. }