Mam aplikację o następującym układzie. W folderze Shared Views Folder mam: _Layout.cshtml
, _SideNav.cshtml
i _CurrentUser.cshtml
.MVC 5 Konto globalne Konto użytkownika Obiekt
W _Layout.cshtml
mam:
@{ Html.RenderPartialIf("_SideNav", Request.IsAuthenticated); }
W _SideNav.cshtml
mam:
@{ Html.RenderPartial("_CurrentUser"); }
W _CurrentUser.cshtml
mam:
<div class="login-info">
<span>
<a href="javascript:void(0);" id="show-shortcut" data-action="toggleShortcut">
<img src="~/content/img/avatars/sunny.png" alt="me" class="online" />
<span>@User.Identity.Name</span>
<i class="fa fa-angle-down"></i>
</a>
</span>
</div>
Używamy FormsAuthentication
do uwierzytelniania użytkownika . Nie używamy standardowego uwierzytelnienia Identity
, które jest dostarczane z ASP.Net MVC 5
, ponieważ używamy serwera LDAP
.
FormsAuthentication.SetAuthCookie(username, isPersistent);
.....
HttpContext.Current.User = new GenericPrincipal(new GenericIdentity(username, "Forms"), roles);
Używamy username
w pliku cookie, dzięki czemu możemy łatwo uzyskać informacje z serwera LDAP
.
Problem: @User.Identity.Name
zwraca tę nazwę użytkownika. Ale muszę wyświetlić pełną nazwę użytkownika. Mam dostęp do pełnej nazwy po uwierzytelnieniu. ale nie wiem, jak z niego korzystać.
Jak mogę przekazać wartość FullName
z AccountController
do częściowego widoku _CurrentUser.cshtml
? Rodzaj globalnego kontenera, takiego jak @User.Identity
z większą liczbą atrybutów, które można ustawić.
Czy przechowujesz niestandardowe dane w pliku cookie służącym do uwierzytelniania? –
Nie używam go po wyjęciu z pudełka, jak na powyższym. Próbowałem rozwiązania do przechowywania niestandardowych danych, ale to nie zadziałało, nie pozwoliłoby mi na uwierzytelnienie. Jeśli masz dla mnie rozwiązanie, spróbuję. –
FormularzAuthenticationTicket zawiera właściwość UserData. To jest bezpłatne. Po odszyfrowaniu biletu można uzyskać do niego dostęp za pomocą niestandardowego obiektu do odczytu i zapisu. Obiekt niestandardowy może zawierać dodatkowe informacje, których potrzebujesz, gdy bilet jest ważny. –