Каков правильный способ получить идентификатор пользователя для служб?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Каков правильный способ получить идентификатор пользователя для служб?

Сообщение Anonymous »


У меня есть контроллер веб-API с методом действия, который позволяет пользователям обновлять свою учетную запись.

У меня есть DTO, который я привязываю к методу действия. По соображениям безопасности я не хочу получать UserId из POST, поэтому DTO, который я привязываю к методу действия, не имеет свойства UserId. Вместо этого у него есть только свойства, которые пользователю разрешено обновлять:

публичный класс UpdateAccountRequest { общедоступная обязательная строка Email { get; набор; } = строка.Пусто; общедоступная обязательная строка Пароль {get; набор; } = строка.Пусто; } Затем у меня есть другой DTO, который наследуется от этого DTO запроса, куда я добавляю UserId:

публичный класс UpdateAccountWithUserIdRequest: UpdateAccountRequest { /// /// Убедитесь, что он установлен только контроллером и не принимается в качестве параметра от клиента. /// _НЕ_ включать в клиент JavaScript. /// общественность требуется int UserId {get; набор; } = 0; } Я не хочу получать доступ к контексту HTTP из своих служб, поэтому в методе действия контроллера я создаю объект UpdateAccountWithUserIdRequest, копируя значения из связанного UpdateAccountRequest и используя ClaimsPrincipal, чтобы получить UserId.

Этот подход работает, но выглядит как хак:
[*]Мне нужно создать производный класс с UserId [*]Убедитесь, что я привязал правильный DTO к методу действия и установил значения вручную.
Можно ли использовать другой подход, чтобы упростить это?
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»