Членство.GetUser (username) - как вернуть правильный корпус?
Я получаю имя пользователя из URL, так что blah.com/kevinuk.
Я хочу, чтобы некоторый контент на странице говорил KevinUK, который хранится в таблице членства, но когда я делаю следующее, он возвращает тот же самый корпус, что и вход.
MembershipUser member = Membership.GetUser(user);
string userName = member.UserName;
Как я могу использовать имя пользователя в нижнем регистре в качестве параметра и возвращать значение из базы данных с правильным регистром?
3 ответа:
Неясно, какой поставщик членства вы используете, но вы можете легко перейти от него и переопределить метод 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://msdn.microsoft.com/en-us/library/ms366730 (VS.80).aspx
К сожалению, метод
Membership.GetUser(string username)
просто устанавливает имя пользователяMembershipUser
в значение передаваемого параметра. Чтобы получить правильный корпус, вам нужно либо использоватьMembership.GetUser(object providerUserKey)
, который принимает GUID пользователя, либо переопределить первый метод и соответствующую хранимую процедуру, чтобы вернуть имя пользователя в правильном корпусе.Или, вы можете просто сделать обратные вызовы к двум различным методам
GetUser()
, но это довольно расточительно.