Маршрутизация для ASP.NET Core Razor Pages - PullRequest
0 голосов
/ 22 декабря 2018

Я искал способ настроить маршрутизацию по умолчанию для ASP.NET Core Razor Pages, но все еще безуспешно.Это мой код для маршрутизации по умолчанию.Что-нибудь еще, что я могу сделать?Кстати, это чисто бритвенные страницы без MVC.

 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.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);


            services.AddDbContext<AppDbContext>(options =>
                    options.UseSqlServer(Configuration.GetConnectionString("AppDbContext")));

            services.AddMvc()
            .AddRazorPagesOptions(options =>
            {
                options.RootDirectory = "/Bank";

            });
        }

Ответы [ 3 ]

0 голосов
/ 22 декабря 2018

ASP.NET Core MVC сам использует промежуточное программное обеспечение маршрутизации.Вы можете использовать это напрямую, если не хотите использовать промежуточное программное обеспечение MVC.

public void ConfigureServices(IServiceCollection services)
{
    services.AddRouting();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    app.UseRouter(cfg =>
    {
        cfg.MapRoute("default", "segmentA/{segmentB}");
    });
}
0 голосов
/ 22 декабря 2018

Мое понимание проблемы (из раздела комментариев), вы хотите сделать следующее:

  1. Добавить маршрутизацию на пользовательские страницы бритвы.
  2. Изменить перенаправление страницы входа в систему.

Чтобы добавить пользовательскую маршрутизацию на бритвенные страницы, вы можете сделать следующее:

//This should be in the very end.
services.AddMvc().AddRazorPagesOptions(options =>
{
   //just to respect Microsoft way, it is better to have Pages folder
   //to contains your folders.
   options.RootDirectory = "/CustomFolder/Pages";
}).SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

И чтобы изменить страницу входа в систему, вам нужно сделать:

  1. Добавьте [Авторизовать] на страницы, к которым вы хотите авторизоваться.Или следуйте Руководствам Microsoft

Если у вас есть защищенные страницы Microsoft для идентификации, например:

services.AddDefaultIdentity<IdentityUser>()
   .AddEntityFrameworkStores<ApplicationDbContext>();

, вам необходимо заменить его на свой Identity (если нет способа переопределить значения по умолчанию).Поскольку по умолчанию будет задан путь входа в систему: /Identity/Account/Login.

, и после реализации вашей собственной идентификации вы можете установить параметры файлов cookie.

services.ConfigureApplicationCookie(options => {
   options.LoginPath = "/Bank/Login";
});

Эти шаги работали длямне.И если вы настаиваете на наличии идентификатора по умолчанию, вы можете добавить CookieAuthenticationEvents и затем реализовать свои собственные OnRedirectToLogin.

РЕДАКТИРОВАТЬ: Вот несколько полезных сайтов:

  1. Конфигурация страниц бритвы .
  2. Настройка удостоверения ядра ASP.NET .
  3. Идентификация настройки .
0 голосов
/ 22 декабря 2018

Если вы внесли изменения здесь

 defaults: new { controller = "Bank", action = "Login" });

, вы должны знать, какое действие вы должны определить в контроллере.Обычно сохраняют либо индекс, либо значение по умолчанию, и если вам необходимо перенаправлять вход при каждом запуске приложения, вы можете настроить его в своем действии.

Например, перенаправить действие входа в систему

// 
// GET: /Account/Login 
 [AllowAnonymous] 
 public ActionResult Login(string returnUrl) 
 { 
     ViewBag.ReturnUrl = returnUrl; 
    return View(); 
  } 
...