daxu
daxu

Reputation: 4074

How to pass user information back to server side with ADAL for angular

I am trying to integrate azure Active Directory Authentication Library for js to my site. I downloaded the SPA sample and made it work with my app detail.

However, how can I pass user information back to server?

For example, this is the example code on server side to retrive the logged in user:

string owner = ClaimsPrincipal.Current.FindFirst(ClaimTypes.NameIdentifier).Value;
IEnumerable<Todo> currentUserToDos = db.Todoes.Where(a => a.Owner == owner);

The owner string turned out to be a guid like token other than a readable username or email address.

Is there a way to retrieve username or email address by using this library directly or I have to send it to server side myself?

Upvotes: 0

Views: 688

Answers (2)

ezile
ezile

Reputation: 571

ClaimTypes.NameIdentifier is a guid unique to each user. If you want readable username or email address, try ClaimTypes.Email or ClaimTypes.Name.

Upvotes: 1

Fei Xue
Fei Xue

Reputation: 14649

Yes, we are able to get the user info from client directly via adal-angular.js. It already store the user information to the $rootScope. userInfo, we can retrieve the user information from it instead of from web server.

Here is the code that retrieve the name and email address:

console.log($rootScope.userInfo.userName);
console.log($rootScope.userInfo.profile.name);
console.log($rootScope.userInfo.profile.upn);

And below is a figure for the struct of userInfo object for your reference: enter image description here

Upvotes: 1

Related Questions