Ho un'applicazione con il seguente layout. Nella cartella Viste condivise che ho, _Layout.cshtml
, _SideNav.cshtml
e _CurrentUser.cshtml
.MVC 5 Global Account Account Object
Nel _Layout.cshtml
ho:
@{ Html.RenderPartialIf("_SideNav", Request.IsAuthenticated); }
Nel _SideNav.cshtml
ho:
@{ Html.RenderPartial("_CurrentUser"); }
Nel _CurrentUser.cshtml
ho:
<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>
Usiamo FormsAuthentication
per autenticare un utente . Non stiamo utilizzando l'autenticazione standard Identity
fornita con ASP.Net MVC 5
perché stiamo utilizzando un server LDAP
.
FormsAuthentication.SetAuthCookie(username, isPersistent);
.....
HttpContext.Current.User = new GenericPrincipal(new GenericIdentity(username, "Forms"), roles);
Usiamo il username
in un cookie in modo da poter facilmente ottenere informazioni dal server LDAP
.
Problema: @User.Identity.Name
restituisce tale nome utente. Ma ho bisogno di visualizzare il nome completo dell'utente. Ho accesso al nome completo quando effettuiamo l'autenticazione. ma non sono sicuro di come usarlo.
Come posso passare il valore FullName
da AccountController
alla vista parziale _CurrentUser.cshtml
? Un po 'come un contenitore globale come @User.Identity
con più attributi che possono essere impostati.
Memorizza dati personalizzati nel cookie di autenticazione? –
No, basta usarlo fuori dalla scatola come sopra. Ho provato una soluzione per archiviare dati personalizzati ma non ha funzionato, non mi ha permesso di autenticarmi affatto. Se hai una soluzione da provare, ci provo. –
FormsAuthenticationTicket contiene una proprietà UserData. Questo è gratis da usare. Dopo aver decrittografato il biglietto, è possibile accedervi con oggetti personalizzati letti e scritti. L'oggetto personalizzato può contenere informazioni aggiuntive necessarie mentre il ticket è valido. –