пятница, 2 августа 2013 г.

Как узнать Id, текущего пользователя Asp.net MVC 4?

При разработке своего веб-приложения на Asp.net mvc 4, мне потребовалось узнать ID текущего пользователя (что в онлайне в данный момент) в формате GUID. Поиск по Гуглу выдал мне мало информации, лишь различные версии:

using System.Web.Security;

....

// NOTE: This is a static method .. which makes things easier to use.
MembershipUser user = Membership.GetUser(User.Identity.Name);
if (user == null)
{
    throw new InvalidOperationException("User [" + 
        User.Identity.Name + " ] not found.");
}

// Do whatever u want with the unique identifier.
Guid guid = (Guid)user.ProviderUserKey;
 
Или просто:
Guid userGuid = (Guid)Membership.GetUser().ProviderUserKey; 
После долгих раздумий, проб у меня получился вот такой код в нужном Controll:
 
if (User.Identity.IsAuthenticated)
{
   var username = User.Identity.Name;
   Guid guid = Guid.Parse(Membership.GetUser(username).ProviderUserKey.ToString());

   ViewBag.Message = "My GUID: " + guid.ToString();

   return View();
} 
 
Показываем в View полученный GUID Id юзера онлайн (для примера):
 
@{
    ViewBag.Title = "Index";
}

<h2>@ViewBag.Message</h2>
<div>
    Hello my friends!
   

</div>
Тем самым мы смотрим, что юзер авторизован, затем идентифицируем, получаем Guid ID, выводим в представлении(для примера, что бы показать что получили)