ASP.NET Core 2.2 MVC проблема перенаправления после входа в систему

Недавно у меня возникла проблема при попытке войти в веб-приложение, над которым я работаю, я не изменял файл Startup.cs, и он работал в прошлый раз, когда я его использовал, но теперь, когда я пытаюсь войти в нем перенаправляет меня обратно на страницу входа, хотя вход в систему успешен

var result = await _signInManager.PasswordSignInAsync(user.UserName, 
    model.Password, model.RememberMe, lockoutOnFailure: true);
if (result.Succeeded)
{
    // return LocalRedirect(returnUrl);
    return RedirectToAction(nameof(HomeController.Index), "Home");
}

он попадает на RetirectToAction, но меня отправляют обратно на страницу входа, также я вижу два состояния в сетевой консоли, 200 и 302, которые должны быть в порядке

Просто небольшое обновление, после попытки разных вещей, похоже, что signInManager не регистрирует меня вообще

Startup.cs

  public void ConfigureServices(IServiceCollection services)
    {
        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.AddDbContext<AORContext>(options =>
            options.UseSqlServer(
                Configuration.GetConnectionString("DefaultConnection")));


        services.AddIdentity<IdentityUser, IdentityRole>()
            .AddDefaultUI(UIFramework.Bootstrap4)
            .AddEntityFrameworkStores<AORContext>();

        services.Configure<IdentityOptions>(options =>
        {
            // Default User settings.
            options.User.AllowedUserNameCharacters =
                    "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._@+";
            options.User.RequireUniqueEmail = true;

        });

        services.Configure<IdentityOptions>(options =>
        {
            // Default Password settings.
            options.Password.RequireDigit = true;
            options.Password.RequireLowercase = true;
            options.Password.RequireNonAlphanumeric = false;
            options.Password.RequireUppercase = true;
            options.Password.RequiredLength = 6;
            options.Password.RequiredUniqueChars = 0;
        });

        services.ConfigureApplicationCookie(options =>
        {
            options.AccessDeniedPath = "/Account/AccessDenied";
            //options.Cookie.Name = "YourAppCookieName";
            options.Cookie.HttpOnly = true;
            options.ExpireTimeSpan = TimeSpan.FromMinutes(60);
            options.LoginPath = "/Account/Login";
            options.LogoutPath = "/Account/Logout";
            // ReturnUrlParameter requires 
            //using Microsoft.AspNetCore.Authentication.Cookies;
            //options.ReturnUrlParameter = CookieAuthenticationDefaults.ReturnUrlParameter;
            //options.SlidingExpiration = true;
        });

        services.AddMvc(config =>
        {
            // using Microsoft.AspNetCore.Mvc.Authorization;
            // using Microsoft.AspNetCore.Authorization;
            var policy = new AuthorizationPolicyBuilder()
                             .RequireAuthenticatedUser()
                             .Build();
            config.Filters.Add(new AuthorizeFilter(policy));
        }).SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
    }

    // 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("/Home/Error");
            // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
            app.UseHsts();
        }

        app.UseHttpsRedirection();
        app.UseStaticFiles();
        app.UseCookiePolicy();

        app.UseAuthentication();

        app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "{controller=Home}/{action=Index}/{id?}");
        });
    }

0 ответов

У меня была та же проблема, и это больше похоже на взлом, чем на что-либо еще, но я заставил ее работать, перенаправив действие обратно на себя с помощью флага. И если флаг установлен, перенаправить на фактическую целевую страницу:

// GET: LoginWithToken
[AllowAnonymous]
[HttpGet("LoginWithToken")]
public async Task<ActionResult> LoginWithToken(string token = null, bool tokenLoginSuccess = false)
{
    // redirect
    if (tokenLoginSuccess)
        return RedirectToAction(nameof(Index));

    // set cookie
    await schoolLoginService.SignInWithToken(this.HttpContext, token);

    return RedirectToAction(nameof(LoginWithToken), new { tokenLoginSuccess = true });
}
Другие вопросы по тегам