Membership.GetUser (nom d'utilisateur) - Comment retourner le bon boîtier?
-
05-07-2019 - |
Question
Je reçois le nom d'utilisateur à partir de l'URL afin de blah.com/kevinuk.
Je veux que le contenu de la page indique KevinUK, ce qui est ce qui est stocké dans la table d'appartenance, mais lorsque je fais ce qui suit, il retourne le même casse que ce que l'entrée a été.
MembershipUser member = Membership.GetUser(user);
string userName = member.UserName;
Comment utiliser un nom d'utilisateur en minuscule comme paramètre et renvoyer la valeur de la base de données avec le casse appropriée?
La solution
Le fournisseur d'adhésion que vous utilisez n'est pas clair, mais vous pouvez facilement en descendre et redéfinir la méthode GetUser.
Créez une classe héritée de la classe MembershipProvider.
public class MyMembershipProvider : MembershipProvider
{
public MyMembershipProvider()
{
//
// TODO: Add constructor logic here
//
}
}
Remplacez la méthode getUser.
public override MembershipUser GetUser(string username, bool userIsOnline)
{
... Logic here to do a case insensitive lookup...
}
Enfin, mettez à jour la configuration Web pour utiliser votre nouveau fournisseur:
<system.web>
<membership defaultProvider="MyMembershipProvider" userIsOnlineTimeWindow="10">
<providers>
<add name="MyMembershipProvider" type="Providers.FIFAMembershipProvider" connectionStringName="ADConnectionString" ... />
</providers>
</membership>
</system.web>
Quelques exemples:
http://msdn.microsoft.com/ en-us / library / ms366730 (VS.80) .aspx
Autres conseils
Malheureusement, la méthode Membership.GetUser (chaîne nom_utilisateur)
définit simplement le nom d'utilisateur de MembershipUser
sur la valeur du paramètre transmis. Pour obtenir la casse correcte, vous devez soit utiliser Membership.GetUser (object providerUserKey)
, qui prend le GUID de l'utilisateur, soit remplacer la méthode précédente et sa procédure stockée respective pour renvoyer la casse appropriée. nom d'utilisateur.
Vous pouvez également faire des appels consécutifs aux deux méthodes GetUser ()
différentes, mais vous perdez du temps.
Stumpled sur le même problème et essayé la solution ci-dessus = Le moyen le plus simple d’obtenir le bon boîtier:
var user = Membership.GetUser(userName.Text);
user = Membership.GetUser(user.ProviderUserKey);
var correctCasing = user.UserName;