Co zwrócić z metody logującej użytkownika?

0

Pewnie jakiś Result<coś>. Tylko czym ma być to coś? Jeśli mam MVC, to właściwie nie muszę nic zwracać - wystarczy odpalić SignInAsync z Identity. Ale jeśli mam Api, to powinienem zwrócić jakieś CurrentUserInfo z tokenem. Problem pojawia się, jeśli chcę mieć podział na warstwy i warstwa aplikacji nic nie wie o warstwie prezentacji. Co zwrócić wtedy?

1

Korzystasz z mediatR?. Bo jeśli tak to ja np z każdego handlera zwracam takie coś:

public class Response
    {
        private readonly IList<ErrorItem> _messages = new List<ErrorItem>();

        public IEnumerable<ErrorItem> Errors { get; }
        public object Result { get; }

        public Response() => Errors = new ReadOnlyCollection<ErrorItem>(_messages);

        public Response(object result) : this()
        {
            Result = result;
        }

        public Response AddError(ErrorItem errorItem)
        {
            _messages.Add(errorItem);
            return this;
        }
        
    }
    public class ErrorItem
    {
        public ErrorCodes Code { get; set; }
        public string Description { get; set; }
    }

i jak już logowanie w handlerze pójdzie ok to robię obiekt anonimowy z jakimis polami (JWT, Role ID itp) i potem z hendlera robię:

return new Response(obiektanonimowy)

Tak, wiem commendy nie powinny zwracać nic ale mam to gdzieś :P

A potem w controlerze w zalezności od tego czy są jakieś błędy czy nie, robię return Ok(response.Result) lub badRequest(response.Errors)

0

@szydlak Tylko że zwracanie obiektu z tokenem JWT uzależnia warstwę aplikacji od prezentacji ;( Nie żeby był to dla mnie jakiś duży problem, po prostu jestem ciekaw, jak powinno być "poprawnie". :P

1 użytkowników online, w tym zalogowanych: 0, gości: 1