Quando sono responsabile, di solito modifico i servizi separatamente dagli endpoint. Ad esempio: Company.Project.Domain.dll
ha tutta la logica necessaria per completare i servizi per quel dominio. Per accedervi, fai riferimento a quella libreria o, se esponi i servizi tramite un endpoint , puoi toccare Company.Project.Endpoint
all'URL: api.wutevz.com/blog / Messaggio /
Cito quanto sopra perché ho (apparentemente sfortunatamente, ma forse sono quello sbagliato) visto la maggior parte dei servizi / domini creati direttamente all'interno di un progetto endpoint (come WCF o Web API). E sapere che la mia configurazione è la chiave della mia domanda. Inoltre, se separare la logica dall'endpoint è strano, sentitevi liberi di intervenire. Mentre penso che separarli sia corretto, sono stanco di molti anni di consulenza e vederli uniti.
La domanda, se la mia metodologia è valida, è: Dove dovrebbe Autenticazione Live nel back-end? Questo non è correlato ad altre domande che chiedono se dovrebbe essere nel back-end contro il client. La mia domanda è: sugli endpoint o sui servizi?
Quindi la mia API Web ha questo Endpoint:
[HttpPost]
//[AuthenticatePlz]
public HttpResponseMessage Message([FromBody] string contents){
_service.AddMessage(contents);
}
E alcuni servizi di dominio hanno il metodo che fa il vero biz:
//[AuthenticatePlz]
public void AddMessage(string contents) {
// probably do some content checks or something and save the message
}
Non esagerare nel vedere se gli Aspetti vengono usati, o qualche middleware Owin, o la Linea 1 del metodo è una chiamata Auth, o qualche altra implementazione orribile. L'obiettivo è: il punto di intercettazione, dove è richiesta l'autenticazione, deve vivere sull'endpoint o sul metodo di servizio?