2014-01-13 3 views
6

Использование ASP.NET Web API вместе с ASP.NET Идентичность 1.0, вы можете использовать этот метод расширения для получения текущего пользователя, подписанного в:При изменении типа id из строки в int, как получить идентификатор текущего подписанного пользователя в веб-API?

var id = Microsoft.AspNet.Identity.IdentityExtensions.GetUserId(User.Identity); 

Но в ASP.NET идентичность 2,0 альфа, вы можете переопределить тип поля ID. В примере, представленном Microsoft, показано, что это поле является int. Но метод это расширение, кажется, жёстко возвращать строку даже в альфа:

http://msdn.microsoft.com/en-us/library/microsoft.aspnet.identity.identityextensions.getuserid(v=vs.111).aspx

Как вы можете получить (INT) идентичность вошедшего в систему пользователя внутри контроллера Web ИЗА используя ASP.NET Identity 2.0 alpha?

+1

Я преобразование в настоящее время, так как я не видел никаких документов или примеры источников о том, как это сделать или. Я буду следить за этим, и мы надеемся, что мы получим ответ вместо того, чтобы преобразовать в int везде. –

ответ

6

Вам необходимо сделать это вручную вручную, так как претензии являются внутренними строками. Мы могли бы предоставить какое-то общее расширение, например User.Identity.GetUserId, которое пытается выполнить преобразование из строки -> T, и это то, что мы рассматриваем в будущих выпусках.

+0

Следите за хорошей работой. –

6

Я закончил с использованием:

public static class IdentityExtensions { 
    public static T GetUserId<T>(this IIdentity identity) where T : IConvertible { 
     return (T)Convert.ChangeType(identity.GetUserId(), typeof(T)); 
    } 
} 

и назвав его как: GetUserId<int>()

+5

исправлено/добавлено в 2.2 –