ОК, есть много способов сделать то, что вы хотите.
Я собираюсь показать вам один способ:
Первый Я создал ванильное веб-приложение AspNetCore, которое использует индивидуальные учетные записи пользователей для параметров аутентификации.
Секунда создает класс модели базовой страницы для повторного использования свойств, которые вам необходимы в вашем личном разделе (страницы, которые должны быть )).
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace RazorPagesExample
{
//this class will be inherited by all your pages that are private
[Authorize]//this makes it so that you need to log in
public class CustomBasePage : PageModel //inherit from PageModel
{
//this is a custom property shared with all the pages that inherit this class
public string Email { get; set; }
//here add more custom properties to share across your website
//added the HttpContextAccessor to get the username in the constructor
public CustomBasePage(IHttpContextAccessor httpContext)
{
//set the custom properties
Email = httpContext.HttpContext.User.Identity.Name;
//now that you have the user name you can go to the database
//and set more custom properties.
}
}
}
Третий Я добавил область SecureStuff на свой сайт следующим образом:
Обратите внимание, как в моей папке SecureStuff / Pages я добавил _PrivateLayout, который будет использоваться всеми «Защищенными страницами» в Районе.
Четвертый давайте установим страницу индекса внутри Области SecureStuff для наследования нашего нового базового класса, например:
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
namespace RazorPagesExample.Areas.SecureStuff.Pages
{
//notice how we inherit our CustomBasePage
public class IndexModel : CustomBasePage
{
private readonly ILogger<IndexModel> _logger;
//notice how we pass the IHttpContextAccessor to the base class by calling the
//base constructor
public IndexModel(ILogger<IndexModel> logger, IHttpContextAccessor httpContext) :base(httpContext)
{
_logger = logger;
}
public void OnGet()
{
}
}
}
Пятый Давайте установим _ViewStart внутри моей Области SecureStuff для использования нового _PrivateLayout следующим образом:
@{
Layout = "_PrivateLayout";
}
Шестой Установите _PrivateLayout установить CustomBasePage в качестве модели.
Этот шаг очень важен!
Именно здесь произойдет «обмен между страницами». Так что это нужно сделать правильно.
Добавьте эту строку кода как FIRST LINE в файле _PrivateLayout.cs html:
@model CustomBasePage
Наконец В вашем классе запуска Введите HttpContextAccessor следующим образом:
public void ConfigureServices(IServiceCollection services)
{
//all the stuff here was omitted for brevity
......
//add your razor pages functionality
services.AddRazorPages();
//this is is needed to access the user from within the constructor of the base class
//must be added after the Razor Pages stuff
services.AddHttpContextAccessor();
}
И вот результат:
Ура !!
Теперь вы можете делиться свойствами со многими страницами в вашей защищенной области. И используйте эти свойства внутри своего _SecureLayout.cs html
Удачи!
Это только для начала. Но вам нужно провести собственное исследование.