11
votes

Mvc asp.net - autoriser manuellement quelqu'un et persister l'autorisation via une authentification des formulaires

Je veux les avantages de l'authentification de formulaire dans ASP.NET. Je veux que cela persiste l'autorisation de moi et de telle, mais il y a une chose différente de ma situation; Je veux vous authentifier contre un simple service Web (spécifiquement fourni par le client).

J'ai mon code en place pour regarder le site Web et voir s'ils doivent em> devraient être autorisés, mais comment J'ai défini le cookie [?] Ou le drapeau d'autorisation dans ASP.NET qu'ils connaissent que l'utilisateur actuel est autorisé. P>

Fondamentalement ... P>

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


4 commentaires

On dirait que vous avez besoin d'un fournisseur de membre personnalisé qui vérifie l'authentification de votre base de données et également dans le service Web. C'est cependant une solution aussi simple que je pense manquer quelque chose d'important; Sinon, vous auriez bien sûr venir avec une telle solution par vous-même.


Je n'ai même pas besoin d'une vérification de la base de données, je regarde simplement un service Web et je vois si le nom d'utilisateur / mot de passe est correct. Il suffit de savoir comment persister que l'utilisateur est "authentifié".


Vous devez créer votre propre fournisseur d'adhésion et publier des cookies d'authentification des formulaires. Ceci est une matière standard.


Puisque vous n'avez pas besoin de gérer des groupes ou des rôles, envisagez simplement de définir manuellement le formulateur de Guissauthenticationcookie. Voir Stackoverflow.com/Questtions / 7524136 / ... pour plus de détails.


3 Réponses :


0
votes

Comme Wiktor a commenté, mettez votre propre MembresProvider . Il suffit de mettre en œuvre les méthodes dont vous avez besoin, laissez le reste à lancer un notamplementeedException .

Dans votre cas, il semble que tout ce que vous devez implémenter est Bool Public Bool Validateuer (Nom d'utilisateur String Nom, String Mot de passe) - La mise en œuvre doit simplement faire appel à votre site Web.

Ensuite, vous pouvez utiliser toutes les trucs d'authentification et d'autorisation intégrés standard.


0 commentaires

10
votes

Dans les formulaires L'authentification n'est pas la preuve de qui vous êtes dans le cookie d'authentification des formulaires.? Avec cela à l'esprit, vous ne pouvez pas créer le billet dans un formulaire de connexion personnalisé sans avoir à créer un fournisseur personnalisé? Je penserais certainement que tu pouvais. Faites un test rapide et créez un ticket d'authentification des formulaires et voyez si le fournisseur d'appartenance à l'extérieur considère l'utilisateur authentifié.

J'étais curieux - alors voici un code ..

Modèle xxx

contrôleur xxx

index.cshtml < / strong> xxx

secure.cshtml xxx


3 commentaires

Salut, FormsAuthentication.settauthcookie (Model.Ausername, False); ne fonctionne pas pour moi. J'utilise mvc 5


@Rahulpatel utilisez-vous l'espace de noms System.Web.Security? Il devrait être pris en charge dans mvc5 / asp.net 4.5+ msdn.microsoft.com/en-us/library/...


@RAHULPATEL - MVC 5 est livré avec ASP.NET Identity activé par défaut qui désactive les formateurs.



7
votes

Je suis peut-être sur la simplification de cela, mais la façon dont je lis est la suivante:

  1. Si un utilisateur n'est pas authentifié, vous avez un formulaire que vous collectez le nom d'utilisateur / mot de passe
  2. Les résultats de ce formulaire sont transmis à un service Web pour autorisation
  3. Si cette autorisation réussit, vous avez besoin d'un moyen de laisser l'application Web sache qu'elles se sont connectées.
  4. S'ils sont authentifiés, dressez

    Si ce qui précède est correct, vous n'avez pas besoin d'un fournisseur d'adhésion. L'attribut [Autoriser] a simplement l'air que le cookie d'authentification des formulaires pour voir s'il a été défini et est valide pour la durée de vie actuelle du cookie. Ce cookie d'authentification stocke le nom d'utilisateur de l'utilisateur et de l'heure d'expiration du cookie (et d'autres choses, mais pas d'importance ici).

    donné que, vous devez définir votre élément de configuration Web.config et avoir Une méthode pour définir le cookie d'authentification.

    web.config xxx

    URL de connexion à la connexion xxx

    URL de la connexion Post Action xxx

    une fois que vous avez appelé le Fonction .Settauthcookie () fonction, l'utilisateur aura maintenant un ticket d'authentification et des appels à httpcontext.user.entity.isauthenciated sera vrai tant que le cookie n'a pas expiré et que vous pouvez obtenir Le nom d'utilisateur de httpcontext.user.identity.name


0 commentaires