MVC ASP.NET - Manuellement autoriser quelqu'un et à la persistance de l'autorisation par l'intermédiaire des Formulaires d'Authentification
Je veux les avantages de l'authentification par formulaire dans ASP.NET. Je veux qu'il persiste, l'autorisation pour moi et, mais il y a une chose de différent à propos de ma situation; je veux s'authentifier auprès d'un service web simple (plus précisément fournie par le client).
J'ai mon code à la place de regarder le lieu web et de voir si elles devrait être autorisé, mais comment puis-je définir le cookie[?] ou d'une autorisation de drapeau ASP.NET qu'ils savent de l'utilisateur en cours est autorisé.
Essentiellement...
if (HttpContext.Current.User.Identity.IsAuthenticated)
//we're all good
//Other wise...
bool success = CheckClientsWebService(string username, string password);
if (success)
//Somehow tell .NET that they're authorized
*Note: Ceci est assez simple service qui ne traite pas avec des groupes ou des rôles. Simplement de vérifier si un utilisateur est ok pour afficher le site.
Je n'ai même pas besoin d'une base de données à vérifier, je suis simplement à la recherche à un service web et de voir si le nom d'utilisateur/mot de passe est correct. Juste besoin de savoir comment persister que l'utilisateur est "authentifié".
Vous devez créer votre propre fournisseur d'appartenances et d'émettre des cookies d'authentification de formulaires. C'est une norme des choses.
Puisque vous n'avez pas besoin de traiter avec des groupes ou des rôles, envisager de réglage manuel de la FormsAuthenticationCookie. Voir stackoverflow.com/questions/7524136/... pour plus de détails.
OriginalL'auteur contactmatt | 2012-08-30
Vous devez vous connecter pour publier un commentaire.
Dans les formulaires d'authentification n'est pas la preuve de qui vous êtes dans le cookie d'authentification de formulaires.? Avec cela à l'esprit, ne pourrait-on pas créer le ticket personnalisé dans un formulaire de connexion, sans avoir à créer un fournisseur personnalisé? Je serait certainement penser que vous pourriez. Faites un test rapide et de créer des formulaires de ticket d'authentification et de voir si la sortie de la box du fournisseur d'appartenances considère que l'utilisateur authentifié.
J'étais curieux de savoir-- donc, voici un peu de code..
Modèle
Contrôleur
Index.cshtml
Sécurisé.cshtml
êtes-vous en utilisant le Système.Web.La sécurité de l'espace de noms? Il doit être pris en charge dans MVC5 / ASP.NET 4.5+ msdn.microsoft.com/en-us/library/...
MVC 5 ASP.NET l'Identité est activé par défaut, ce qui désactive FormsAuthentication.
OriginalL'auteur ek_ny
J'ai peut-être plus de la simplification, mais la façon dont je lis ceci est la suivante:
Si ce qui précède est correct, vous n'avez pas besoin d'un fournisseur d'appartenances. L'attribut [Authorize] regarde simplement que le cookie d'authentification de formulaires pour voir si elle a été définie et est valide pour la durée de vie du cookie. Ce cookie d'authentification stocke le nom d'utilisateur de l'utilisateur et la date d'expiration du cookie (et d'autres trucs, mais pas important ici).
Étant donné que, vous avez seulement besoin de mettre votre site web.config configuration de l'élément et de disposer d'une méthode pour définir le cookie d'authentification.
Web.Config
URL de connexion de l'OBTENIR d'action
URL de connexion de l'action POST
Une fois que vous avez appelé le
.SetAuthCookie()
fonction, l'utilisateur aura désormais un ticket d'authentification et d'appels à laHttpContext.User.Identity.IsAuthenticated
sera vrai tant que le cookie n'a pas expiré et vous pouvez obtenir le nom d'utilisateur deHttpContext.User.Identity.Name
OriginalL'auteur Tommy
Comme Wiktor commenté, mettre en place votre propre MembershipProvider. Mettre en œuvre les méthodes que vous avez besoin, laissez le reste à jeter un
NotImplementedException
.Dans votre cas, ça ressemble à tout ce que vous devez mettre en œuvre est
public bool ValidateUser(string username, string password)
- dont la mise en œuvre juste besoin de faire appel à votre webservice.Ensuite, vous pouvez utiliser tous les standard intégré dans l'authentification et l'autorisation des trucs.
OriginalL'auteur StanK