C# вернуть данные для вошедшего в систему пользователя - PullRequest
0 голосов
/ 07 августа 2020

Я использую ASP. Net Core 3 с членством. В настоящее время у меня есть метод index, возвращающий все записи в таблице Assets. Я хочу изменить его так, чтобы он возвращал активы на основе вошедшего в систему пользователя, позволяя роли администратора просматривать их все.

В таблице активов у меня есть столбец, в котором идентификатор пользователя сохраняется для каждого пользователя кто создает новый актив. Я не уверен, какой путь к go с тем, что у меня уже есть.

Код контроллера

public ViewResult Index() {
    // retrieve all the assets
    var model = _assetRepository.GetAllAssets();

    // Pass the list of assets to the view
    return View(model);
}

Код хранилища

public IEnumerable<Asset> GetAllAssets() {
    return context.Asset;
}

Код интерфейса

public interface IAssetRepository {
    Asset GetAsset(int Id);

    IEnumerable<Asset> GetAllAssets();
    
    Asset Add(Asset asset);
    Asset Update(Asset assetChanges);
    Asset Delete(int Id);
}

Ответы [ 2 ]

2 голосов
/ 07 августа 2020

Хорошим местом для начала является изучение одного из руководств по работе с аутентификацией и авторизацией в ASP. NET Core. Вот один , который, кажется, относится к вашему случаю.

0 голосов
/ 09 августа 2020

Во-первых, я рекомендую вам добавить новую колонку, сохраняющую «роль». Если вы не хотите использовать уже существующий фреймворк. Затем, если вы добавите столбец с ролью, которую вы можете сделать в репозитории, примерно так:

public IEnumerable<Asset> GetAllAssets(Guid userId) {
    var role = context.Asset.Where(x => x.userId = userId).Select(x => x.role);
    if (role = "admin")
       return context.Asset;
    return context.Asset.Where(x => x.userId = userId);
}

Для этого случая я жестко запрограммировал "admin", вы можете заменить его своей реализацией. Но я думаю, вы хотите прийти к такому решению ...

Надеюсь вам помочь. И я рекомендую вам добавить новый слой «сервис», между контроллером и репозиторием, вы можете добавить туда «бизнес-лог c».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...