Authentification ServiceStack Razor

Je regarde l’exemple Rockstars et ServiceStack.Razor.

Comment puis-je intégrer l’authentification dans, par exemple, la page secure.cshtml. Je peux donc redirect l’utilisateur vers Login.cshtml si nécessaire.

Je ne comprends que par exemple avec SocialBootstrapApi si je mélange MVC hybird, je peux mettre [authenticate ()] à ServiceStackController pour y parvenir.

Mais que se passe-t-il si je veux juste un projet SS pur sans .net MVC?

L’atsortingbut Authenticate est simplement un atsortingbut de filtre de demande ServiceStack, c’est-à-dire qu’il fonctionne dans MVC et ServiceStack.

L’application de ce filtre retournera une réponse 401 UnAuthorized pour toutes les demandes non HTML. Par exemple, si vous appelez cela avec Ajax, vous pourrez détecter cette réponse d’erreur et effectuer la redirection sur le client.

À partir de la v3.9.23 + de ServiceStack, l’atsortingbut [Authenticate] redirecta automatiquement toutes les erreurs d’authentification vers ~/login url par défaut.

Vous pouvez remplacer cette URL lorsque vous enregistrez la fonction AuthFeature, par exemple:

 Plugins.Add(new AuthFeature(...) { HtmlRedirect = "/path/to/my/login" }); 

Ce qui s’appliquera globalement à tous les atsortingbuts [Authenticate] ou vous pouvez le remplacer sur une base ad hoc avec:

 [Authenticate(HtmlRedirect="/path/to/my/login")] 

Remarque: les atsortingbuts étant héritables, vous pouvez les append une fois à une classe SecuredService . Toutes les sous-classes hériteront de son comportement.

Redirection manuelle

Pour redirect manuellement une requête HTML non autorisée, vous pouvez effectuer votre propre vérification + redirection avec:

 public object Secured(Request request) { if (!base.SessionAs().IsAuthenticated) return new HttpResult(HttpStatusCode.Redirect, "Un Authorized") { Headers = { {"Location", "/path/to/login" } } }; } 

Il existe également un wrapper DRY autour de la redirection ci-dessus que vous pouvez utiliser à la place:

 public object Secured(Request request) { if (!base.SessionAs().IsAuthenticated) return HttpResult.Redirect("/path/to/login"); }