Вам чего-то не хватает, какой пользователь ??
Либо передайте что-нибудь в сигнатуру вашей функции , либо получите от HTTPContex
t вам нужно найти пользователя, которого вы хотите найти
Если вы используете ASP ядро немного отличается от старых способов
Сначала это:
var userId = _httpContextAccessor.HttpContext.User.FindFirst(ClaimTypes.NameIdentifier).Value;
А теперь ..
// make sure you can access/inject it if you want
// private.. _httpContextAccessor
// then in your action
[HttpGet]
public async Task<IActionResult> MyProcedures()
{
// again make sure you can access the context _httpContextAccessor
var userId = _httpContextAccessor.HttpContext.User.FindFirst(ClaimTypes.NameIdentifier).Value;
var procedures = context.Procedures.Where(x => x.Lawyers.Contains(userId).FirstOrDefault());
//... fill in whatever logic you want..
return View(parnice);
}
Обновление 2 на основе вопроса / комментариев:
Сделайте это в два шага
- Шаг 1: Получить текущего пользователя (с помощью
claims
или HTTPContext
, как показано ниже), например, System.Security.Claims.ClaimsPrincipal currentUser = this.User;
- Шаг 2. С помощью пользователя найдите все связанные Lawyers et c.
context.Procedures.Where(x => x.Lawyers.Contains(userId)
Обязательно зарегистрируйте HttpContextAccessor при запуске ... дважды отметьте это .., чтобы зарегистрироваться в файле Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();
}
В оригинале Базовая версия, я должен дважды проверить, изменилась ли она сейчас, при условии, что ваш код находится внутри MVC контроллера:
public class YourController : Microsoft.AspNetCore.Mvc.Controller
Теперь, так как у вас есть базовый класс Controller
, вы можете получить IClaimsPrincipal
из User
свойства
System.Security.Claims.ClaimsPrincipal currentUser = this.User;
Вы можете проверить претензии напрямую (без обратной поездки в базу данных):
var userId = _userManager.GetUserId(User); // Get user id:
К вашему Во втором комментарии вы можете получить либо UserId, либо UserName
// user's userId
var userId = User.FindFirstValue(ClaimTypes.NameIdentifier)
// user's userName
var userName = User.FindFirstValue(ClaimTypes.Name)
Хорошая ссылка , надеясь, что это поможет:)