• Digitální příslušenství
  • Server
  • Digitální život
  • Zásady ochrany osobních údajů
  • Kontaktujte nás
  1. Domov
  2. Server
  3. c# - Ověření Google v Blazor na straně serveru nefunguje ...

c# - Ověření Google v Blazor na straně serveru nefunguje ...

Rsdaa 16/01/2022 1644

Pokouším se přidat Google Authentication do své serverové aplikace Blazor a nedaří se mi, aby fungovalo na mém localhost. Když kliknu na tlačítko Přihlásit, přenese mě to do nástroje pro výběr účtu Google, kde vyberu účet, který se má použít pro přihlášení. Poté, co účet vyberu, vrátí se zpět na přihlašovací stránku localhost, kde OnGetCallbackAsync ukazuje, že GoogleUser.IsAuthenticated je Nepravdivé.

Níže je soubor Startup.cs

jmenný prostor RecruitmentApp{veřejné spuštění třídy{veřejné spuštění(konfigurace Ikonfigurace){Konfigurace = konfigurace;}veřejná konfigurace konfigurace Ikonfigurace { get; }// Tuto metodu volá běhové prostředí. Tuto metodu použijte k přidání služeb do kontejneru.// Další informace o konfiguraci aplikace naleznete na adrese https://go.microsoft.com/fwlink/?LinkID=398940public void ConfigureServices(IServiceCollection services){services.AddDbContext( options =>options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));//options.UseSqlite("DataSource=app.db"));services.AddDefaultIdentity(options => options.SignIn.RequireConfirmedAccount = false ).AddEntityFrameworkStores();services.AddRazorPages();services.AddServerSideBlazor();services.AddScoped>();services.AddSingleton();services.AddAuthentication().AddGoogle(options =>{options.ClientId "Authentication:Google:ClientId"];options.ClientSecret = Configuration["Authentication:Google:ClientSecret"];options.ClaimActions.MapJsonKey("urn:google:profile", "link");options.ClaimActions.MapJsonKey(" urn:google:image", "picture");});// From: https://github.com/aspnet/Blazor/issues/1554// Přidá HttpContextAccessor// Používá se k určení, zda je uživatel přihlášen/ / a jaké je jejich uživatelské jménoservices.AddHttpContextAccessor();services.AddScoped();// Vyžadováno pro podporu HttpClient v projektu Blazor Clientservices.AddHttpClient();services.AddScoped();// Předání nastavení dalším komponentámservices.AddSingleton(Configuration );}// Tuto metodu volá běhový modul. Tuto metodu použijte ke konfiguraci potrubí požadavku HTTP.public void Configure(IApplicationBuilder app, IWebHostEnvironment env){if (env.IsDevelopment()){app.UseDeveloperExceptionPage();app.UseDatabaseErrorPage();}else{app.UseExceptionHandler(" /Error");// Výchozí hodnota HSTS je 30 dní. Možná budete chtít toto změnit pro produkční scénáře, viz https://aka.ms/aspnetcore-hsts.app.UseHsts();}app.UseHttpsRedirection();app.UseStaticFiles();app.UseRouting();// app.UseCookiePolicy();app.UseAuthentication();app.UseAuthorization();app.UseEndpoints(endpoints =>{endpoints.MapControllers();endpoints.MapBlazorHub();endpoints.MapFallbackToPage("/_Host"); );}}}

A zde je kód uvnitř Login.cshtml.cs, kde se problém projevuje.

jmenný prostor RecruitmentApp.Pages{[AllowAnonymous]veřejná třída LoginModel : PageModel{public IActionResult OnGetAsync(string returnUrl = null){string provider = "Google";// Žádost o přesměrování na externího poskytovatele přihlášení.var authenticationProperties = new AuthenticationUrities Url.Page("./Login",pageHandler: "Callback",values: new { returnUrl }),};return new ChallengeResult(provider, authenticationProperties);}veřejná asynchronní úloha OnGetCallbackAsync(string returnUrl = null, string remoteError = null ){// Získejte informace o uživateli od externího poskytovatele přihlášenívar GoogleUser = this.User.Identities.FirstOrDefault();// -----> !!! PROBLÉM GoogleUser.IsAuthenticated vrací false!!!!if (GoogleUser.IsAuthenticated){var authProperties = new AuthenticationProperties{IsPersistent = true,RedirectUri = this.Request.Host.Value};wait HttpContext.Signication,NewAsyncault Principál nároků (GoogleUser), authProperties);}return LocalRedirect("/");}}}

Na adrese console.developers.google.com bylo nastaveno ID klienta OAuth 2.0 typu „Webová aplikace“, přičemž do souboru secrets.json projektu byly přidány ClientID a Secret.

ID klienta OAuth bylo upraveno pomocí následujících autorizovaných URI přesměrování:

https://localhost:44319/Loginhttps://localhost:44319/signin-google

Nevidím, co je špatně, proč po výběru uživatele google vrací GoogleUser.IsAuthenticated = false. Nějaké nápady?


PREV: Hostování vlastního webového serveru doma - The Silicon Underground

NEXT: Jak přesunout živý web WordPress na místní server

Populární články

Žhavé články
Zpět na začátek