Membership.GetUser (имя пользователя) - как вернуть правильный корпус?

StackOverflow https://stackoverflow.com/questions/1001527

  •  05-07-2019
  •  | 
  •  

Вопрос

Я получаю имя пользователя по URL, так что blah.com/kevinuk.

Я хочу, чтобы некоторое содержимое на странице сообщало KevinUK, что хранится в таблице членства, но когда я делаю следующее, он возвращает тот же регистр, что и входные данные.

MembershipUser member = Membership.GetUser(user);
string userName = member.UserName;

Как использовать строчное имя пользователя в качестве параметра и вернуть значение из базы данных с правильным регистром?

Это было полезно?

Решение

Непонятно, какой поставщик членства вы используете, но вы можете легко отказаться от него и переопределить метод GetUser.

Создайте класс, который унаследован от класса MembershipProvider.

public class MyMembershipProvider : MembershipProvider

{

    public MyMembershipProvider()

    {

        //

        // TODO: Add constructor logic here

        //

    }

}

Переопределите метод getUser.

public override MembershipUser GetUser(string username, bool userIsOnline)

{
 ... Logic here to do a case insensitive lookup...

}

Наконец, обновите веб-конфигурацию для использования вашего нового провайдера:

<system.web>
    <membership defaultProvider="MyMembershipProvider" userIsOnlineTimeWindow="10">
        <providers>
            <add name="MyMembershipProvider" type="Providers.FIFAMembershipProvider"     connectionStringName="ADConnectionString" ... />
        </providers>
    </membership>
</system.web>

Некоторые примеры:

http: / /www.eggheadcafe.com/tutorials/aspnet/30c3a27d-89ff-4f87-9762-37431805ef81/aspnet-custom-membership.aspx

http://msdn.microsoft.com/ ан-нас / библиотека / ms366730 (VS.80) .aspx

Другие советы

К сожалению, метод Membership.GetUser (string username) просто устанавливает для имени пользователя MembershipUser значение переданного параметра. Чтобы получить правильный регистр, вам нужно либо использовать Membership.GetUser (object providerUserKey) , который принимает GUID пользователя, либо переопределить прежний метод и соответствующую ему хранимую процедуру, чтобы вернуть корректный регистр имя пользователя.

Или вы можете просто сделать взаимный вызов двух разных методов GetUser () , но это довольно расточительно.

Запутался в той же проблеме и попробовал вышеуказанное решение = Самый простой способ получить правильный корпус:

var user = Membership.GetUser(userName.Text);
user = Membership.GetUser(user.ProviderUserKey);
var correctCasing = user.UserName;
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top