Установите Перенаправление По Умолчанию Для Тега Авторизации

#c# #asp.net-core #asp.net-core-mvc #asp.net-core-identity

Вопрос:

Asp.net В Core 3 есть несколько разных условностей — оголитесь со мной.

У меня есть контроллер, который я пытаюсь использовать промежуточное программное обеспечение для аутентификации. Я использовал «строительные леса» по умолчанию при создании нового основного проекта в VS2019. Использовал шаблон проекта MVC для asp.net ядро 3.1.

У меня есть контроллер с тегом [Авторизовать].

 [Authorize]
public class AgentController : Controller
{
}
 

В прошлой жизни.. Я знал, где установить перенаправление по умолчанию в случае несанкционированного доступа.

Это вынуждает перенаправлять на /Идентификацию/вход-набор страниц razor по умолчанию, который, похоже, встроен. Мне нужно, чтобы он перенаправился на определенный контроллер/действие. Учетная запись/Вход в систему

Вот мой стартап:

     public void ConfigureServices(IServiceCollection services)
    {
        services.AddDbContext<ApplicationDbContext>(options =>
            options.UseSqlServer(
                Configuration.GetConnectionString("DefaultConnection")));
        services.AddDefaultIdentity<AgentUser>(options => options.SignIn.RequireConfirmedAccount = false)
            .AddEntityFrameworkStores<ApplicationDbContext>();
        services.AddControllersWithViews();
        //services.AddRazorPages();

    }

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
            app.UseDatabaseErrorPage();
        }
        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.UseRouting();

        app.UseAuthentication();
        app.UseAuthorization();


        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute(
                name: "default",
                pattern: "{controller=Home}/{action=Index}/{id?}");
            endpoints.MapRazorPages();
        });
    }
 

Ответ №1:

Вы можете настроить конкретный путь в ConfigureServices Startup ):

 services.ConfigureApplicationCookie(config =>
{
    config.Cookie.Name = "Identity.Cookie";
    config.LoginPath = "/Account/SignIn";
});
 

Когда вы добавляете services.AddRazorPages() и services.AddControllersWithViews() в то же время, вам нужно избегать одинаковой маршрутизации.