martedì 26 febbraio 2013

Recupero utente loggato Sharepoint 2010/2013 - Claims Based vs Classic Mode

Nelle applicazioni Sharepoint per recuperare l'utente loggato è sufficiente recuperare il login name dall'istanza del sito corrente nel seguente modo:
var strUsername = SPContext.Current.Web.CurrentUser.LoginName;
Questo funziona nel caso in cui la nostra autenticazione sia in "Classic Mode".
Nel in cui la il nostro tipo di autenticazione sia di tipo "Claims based" il risultato dell'istruzione sopra riportata sarà il seguente:
i:0#.w|Domain\ username
Occorrerà quindi differenziare le due tipologie di autenticazione utilizzando lo strumento SPClaimProviderManager fornito da Sharepoint contenuto in Microsoft.SharePoint.Administration.Claims
string strUsername = string.Empty;
 
SPClaimProviderManager mgr = SPClaimProviderManager.Local;
 
if (SPClaimProviderManager.IsEncodedClaim(SPContext.Current.Web.CurrentUser.LoginName))
    strUsername = mgr.DecodeClaim(SPContext.Current.Web.CurrentUser.LoginName).Value;
else
    strUsername = SPContext.Current.Web.CurrentUser.LoginName;
Di seguito alcuni riferimenti al tema:
http://www.wictorwilen.se/Post/How-Claims-encoding-works-in-SharePoint-2010.aspx 
http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.claims.spclaimprovidermanager.aspx
http://blog.mastykarz.nl/programmatically-converting-login-name-claim/

Nessun commento:

Posta un commento