Member 13974128 Ответов: 0

Auth0 и ASP.NET core 2.0 razor pages authorization control


Я интегрированы авто в MVC .объем ядра 2.1 и используя бритву страниц,не в состоянии понять, как использовать разрешение, если я хочу контролировать бритвы доступ к страницам,так что вход и выход происходит нормально, но пользователь не прошел проверку подлинности и оставить пользователя на той же странице , но сейчас, когда я пытаюсь получить доступ к URL при выходе я получаю сообщение об ошибке, когда я попытался открыть URL-адрес :https://localhost:5001/Conflicts[^]

This localhost page can’t be found
No webpage was found for the web address: https://localhost:5001/Account/Login?ReturnUrl=%2FConflicts
HTTP ERROR 404
и
url-адрес, который генерируется, является :https://localhost:5001/Account/Login-что?ReturnUrl=%2FConflicts[^]



страница по умолчанию MainPage и я хочу сохранить пользователя на той же странице если они не аутентифицированы id попытка доступа к URL например страница конфликтов они должны оставаться на главной странице

Что я уже пробовал:

 public class Startup
   {
       public Startup(IConfiguration configuration)
       {
           Configuration = configuration;
           HostingEnvironment = HostingEnvironment;
       }

       public IConfiguration Configuration { get; }
       public IHostingEnvironment HostingEnvironment { get; }

       // This method gets called by the runtime. Use this method to add services to the container.
       public void ConfigureServices(IServiceCollection services)
       {
           services.Configure<IISOptions>(options =>
           {
               options.ForwardClientCertificate = false;
           });

           services.AddAuthentication(options =>
           {
               options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
               options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
               options.DefaultChallengeScheme = CookieAuthenticationDefaults.AuthenticationScheme;
           })
        .AddCookie()
        .AddOpenIdConnect("Auth0", options =>
        {
            // Set the authority to your Auth0 domain
            options.Authority = $"https://{Configuration["Auth0:Domain"]}";

            // Configure the Auth0 Client ID and Client Secret
            options.ClientId = Configuration["Auth0:ClientId"];
            options.ClientSecret = Configuration["Auth0:ClientSecret"];

            // Set response type to code
            options.ResponseType = "code";

            // Configure the scope
            options.Scope.Clear();
            options.Scope.Add("openid");

            // Set the callback path, so Auth0 will call back to http://localhost:5000/signin-auth0
            // Also ensure that you have added the URL as an Allowed Callback URL in your Auth0 dashboard
            options.CallbackPath = new PathString("/signin-auth0");

            // Configure the Claims Issuer to be Auth0
            options.ClaimsIssuer = "Auth0";

            // Saves tokens to the AuthenticationProperties
            options.SaveTokens = true;

            options.Events = new OpenIdConnectEvents
            {
                // handle the logout redirection
                OnRedirectToIdentityProviderForSignOut = (context) =>
             {
                 var logoutUri = $"https://{Configuration["Auth0:Domain"]}/v2/logout?client_id={Configuration["Auth0:ClientId"]}";

                 var postLogoutUri = context.Properties.RedirectUri;
                 if (!string.IsNullOrEmpty(postLogoutUri))
                 {
                     if (postLogoutUri.StartsWith("/"))
                     {
                            // transform to absolute
                            var request = context.Request;
                         postLogoutUri = request.Scheme + "://" + request.Host + request.PathBase + postLogoutUri;
                     }
                     logoutUri += $"&returnTo={ Uri.EscapeDataString(postLogoutUri)}";
                 }

                 context.Response.Redirect(logoutUri);
                 context.HandleResponse();

                 return Task.CompletedTask;
             }
            };
        });


           services.Configure<CookiePolicyOptions>(options =>
           {
               // This lambda determines whether user consent for non-essential cookies is needed for a given request.
               options.CheckConsentNeeded = context => true;
               options.MinimumSameSitePolicy = SameSiteMode.None;
           });

           services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
           services.AddMvc().AddRazorPagesOptions(options =>
           {
               options.Conventions.AddPageRoute("/MainPage", "");
options.Conventions.AuthorizePage("/Conflicts");
           });
       }

       // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
       public void Configure(IApplicationBuilder app, IHostingEnvironment env)
       {
           if (env.IsDevelopment())
           {
               app.UseDeveloperExceptionPage();
           }
           else
           {
               app.UseExceptionHandler("/Error");
               app.UseHsts();
           }

           app.UseHttpsRedirection();
           app.UseStaticFiles();
           app.UseCookiePolicy();
           app.UseCorsMiddleware();
           app.UseAuthentication();
           app.UseCors("CorsPolicy");
           app.UseMvc();
           //app.UseMvc(rb =>
           //{
           //    rb.MapRoute(
           //        name: "default",
           //        template: "{controller}/{action}/{id?}",
           //        defaults: new { controller = "Home", action = "Index" });
           //});
       }
   }

0 Ответов