Je développe une application WebForms Web avec VS2010 en C #. J'utilise mon approche de connexion personnalisée pour authentifier les utilisateurs et je ne veux pas utiliser le cadre d'adhésion. Après la connexion de l'utilisateur, je souhaite stocker des données utilisateur en tant qu'utilisateur, nom d'utilisateur, nom de famille, email, etc., je peux donc y accéder pendant la session d'utilisateur dans toutes les pages.
Comment puis-je faire cela? Je ne veux pas stocker les données utilisateur dans la propriété J'ai trouvé cette approche: Je stockerai les données utilisateur en session ou utiliser un fournisseur de profil personnalisé? , mais je ne comprends pas comment la mettre en œuvre. P> J'ai quelques questions: VOID Application_AuthentiCatreQuest (expéditeur d'objet, eventargs e)
{ p> puis-je stocker les données utilisateur en session lorsque vous avez écrit à partir de mon fichier global.asax plutôt que connectez-vous.aspx page? p> p> userData code> du
formulairesAuthentictionticket code>. P>
1) Dans ma page de connexion pour authentifier l'utilisateur après avoir vérifié les informations d'identification sur dB i Utilisation: FormulairesAuthentication.setauthuthcookie (TextaSername.Value, True); Maintenant, dans ma page par défaut, j'ai:
Ticket FormsAuthenticationTicket = ((Rassentiment) (utilisateur.Identifity)). Ticket; et j'utilise ticket.name pour montrer le nom d'utilisateur. est-ce correct? Pourquoi parlez-vous de fil de fil à l'aide de thread.Currentprincipal.Identity.name?
2) J'ai ce code dans Global.Asax Fichier pour lire les rôles d'utilisateur et les stocker dans httpcontext: P>
3 Réponses :
Adhésion fournisseur vous aide stocker des données et également pour l'authentification. Quelque chose comme ceci: -
Je ne veux pas utiliser le fournisseur d'adhésion. Je trouve des exemples de code pour résoudre mon problème.
Des conseils vous permettent de stocker des données utilisateur dans la session?
Veuillez vérifier ce lien: -
Si vous parlez de «application Web par VS2010 dans C #», vous parlez d'ASP.NET (MVC ou classique) et par «approche de connexion personnalisée», vous faites référence à Formulaires Ensuite, tout ce que vous avez à faire est de stocker vos informations plus tardées au moment de la connexion, sur le Session objet.
Disons que vous utilisez asp.net classique et vous avez une page de connexion p>
p>
qui dispose de 2 entrées pour nom d'utilisateur et mot de passe et un bouton d'envoi intitulé" Connexion " P>
p>
sur le gestionnaire d'événements de la touche (côté serveur) que vous devriez faire quelque chose comme ceci: p> Alors que d'autres informations peuvent être placées sur l'objet de session (comme vous allez ajouter des paires de valeur de clé à un dictionnaire): p> alors qu'il est évident que vous pouvez accéder plus tard ce même informations (pour l'utilisateur respectif): p> Il est peut-être important de mentionner que le nom d'utilisateur (s'il n'est pas placé explicitement sur l'objet de session comme les autres exemples) est accessible par Moyens du thread.CurrentPrincipal Propriété statique Comme: p>
Merci de votre réponse, je vais essayer votre solution très bientôt, j'ai une question:
1) Maintenant, dans ma page par défaut, j'ai: GoussauthenticationTicket ticket = ((((("consolidentité) (utilisateur.Identifity)).
Je pense que je peux deviner où vous allez avec votre question. À mon avis, en ce qui concerne vous-même avec le billet associé à l'identité de la maîtrentiellement est un peu qui regarde sous la hotte. Voulez-vous regarder sous le capot à ce moment-là ou voulez-vous une application de travail? Il arrive donc que la maîtrentition est tout à fait savoir si une demande provient de quelqu'un d'autre ou de quelqu'un d'autre. En fait, vous n'avez même pas besoin de formulaires pour désambiguez entre différentes sessions. Réponse courte à votre 1): Je pense vraiment que tout ce que vous voulez, c'est d'obtenir cette information que vous avez mentionnée dans la question, pas le cookie ..
Merci de votre réponse, je vais essayer votre solution très bientôt, j'ai écrit une question dans mon premier sujet. Je ne comprends pas bien qu'avez-vous dit dans votre dernier commentaire?
Je vais essayer de le rendre plus simple. Ce que j'ai dit, c'était ceci: vous essayez d'obtenir un certain effet en utilisant un certain outil. Vous essayez de sécher vos cheveux en utilisant un sèche-cheveux. Vous ne savez pas comment vous devez l'utiliser exactement: des choses comme 1. Branchez-la, 2. Recherchez le commutateur ON / OFF enfoncé et allumez-le sur ... La propriété du billet de la classe de visientatilation est un peu .. Génie électrique. C'est à ce stade au moins, un détail du fonctionnement intérieur du moteur électrique, à l'intérieur du sèche-cheveux. Vous n'avez pas besoin de vous inquiéter des bobines magnétiques, de convertir l'électricité en champs magnétiques variables, etc. Utilisez simplement la sécheuse :)
Dans l'intérêt du débogage plus facile, je suggère d'utiliser le modèle de conception de la façade de session, décrite ici , qui vous permettra de stocker les données actuelles de l'utilisateur à l'aide du Par exemple, il y aurait un fichier (par exemple, puis, ailleurs dans votre code, une fois que vous avez vérifié que les informations d'identification sont correctes, vous pouvez faire ... P> ... Au lieu d'assigner manuellement des valeurs à l'objet de session. Cela garantit que vos variables dans la session (oui cet extrait de la réponse d'Eduard; vous devriez toujours regarder cette réponse comme ça est informatif sur le fonctionnement des formes Web; il suffit de garder à l'esprit que l'appel de la session httpcontext.current.session code> objet de manière plus organisée.
sessionfacade.cs code>) responsable de la gestion des valeurs transmises à / dans la session
code>; Dans votre cas, il pourrait ressembler à: p>
code> sont du type correct et seront plus faciles à suivre tout en débogage. Ensuite, pour obtenir l'ID utilisateur de n'importe où dans votre programme, c'est juste
sessionfacade.userid code>. P>
manuellement de la session code> manuellement dans votre code peut être assez désordonné et que la façade de la session fait ce processus nettoyant) P> P>
Merci pour votre exemple de code, j'ai une question pour vous: quelle est la différence entre cette approche (stocker des données dans la session ASP) et écrire une classe de profil personnalisée?
Pas trop familier avec le travail avec profil, mais (corrigez-moi si je me trompe) Configuration d'un profil implique de travailler avec le fichier web.config, tandis qu'une façade de session contourne cela. Tous deux ont une idée similaire cependant: vous ne travaillerez pas avec l'objet de session directement.