Membership.GetUser (username) - como retornar casing correto?
-
05-07-2019 - |
Pergunta
Estou recebendo o nome de usuário na URL para blah.com/kevinuk.
Eu quero algum conteúdo na página para dizer KevinUK que é o que está armazenado na tabela de adesão, mas quando eu faço o seguinte, ele retorna o mesmo invólucro como o que a entrada era.
MembershipUser member = Membership.GetUser(user);
string userName = member.UserName;
Como faço para usar um nome de usuário em minúsculas como parâmetro e retornar o valor do banco de dados com a caixa correta?
Solução
Não é claro qual provedor de associação que você está usando, mas você pode facilmente descer do que e substituir o método GetUser.
Crie uma classe que classe herdada da classe MembershipProvider.
public class MyMembershipProvider : MembershipProvider
{
public MyMembershipProvider()
{
//
// TODO: Add constructor logic here
//
}
}
Substituir o método getUser.
public override MembershipUser GetUser(string username, bool userIsOnline)
{
... Logic here to do a case insensitive lookup...
}
Finalmente atualizar a configuração de internet para usar seu novo provedor:
<system.web>
<membership defaultProvider="MyMembershipProvider" userIsOnlineTimeWindow="10">
<providers>
<add name="MyMembershipProvider" type="Providers.FIFAMembershipProvider" connectionStringName="ADConnectionString" ... />
</providers>
</membership>
</system.web>
Alguns exemplos:
http://msdn.microsoft.com/ en-us / library / ms366730 (VS.80) .aspx
Outras dicas
Infelizmente, o método Membership.GetUser(string username)
simplesmente define nome de usuário do MembershipUser
ao valor do parâmetro passado. Para chegar a caixa correta, você nem precisa de uso Membership.GetUser(object providerUserKey)
, que leva GUID do usuário, ou substituir o antigo método e seu respectivo procedimento armazenado para retornar o nome de usuário devidamente encaixotado.
Ou, você poderia simplesmente fazer chamadas back-to-back para os dois métodos GetUser()
diferentes, mas isso é muito desperdício.
stumpled sobre o mesmo assunto e tentou acima solução = maneira mais fácil de conseguir casing correto:
var user = Membership.GetUser(userName.Text);
user = Membership.GetUser(user.ProviderUserKey);
var correctCasing = user.UserName;