如何使用 angular 的 ADAL 将用户信息传回服务器端
How to pass user information back to server side with ADAL for angular
我正在尝试将 js 的 azure Active Directory 身份验证库集成到我的站点。我下载了 SPA 示例并使其与我的应用详细信息一起使用。
但是,如何将用户信息传回服务器?
例如,这是服务器端检索登录用户的示例代码:
string owner = ClaimsPrincipal.Current.FindFirst(ClaimTypes.NameIdentifier).Value;
IEnumerable<Todo> currentUserToDos = db.Todoes.Where(a => a.Owner == owner);
所有者字符串原来是一个类似于令牌的 GUID,而不是可读的用户名或电子邮件地址。
有没有办法直接使用这个库来检索用户名或电子邮件地址,或者我必须自己将其发送到服务器端?
是的,我们可以直接通过adal-angular.js从客户端获取用户信息。它已经将用户信息存储到 $rootScope 中。 userInfo,我们可以从它而不是从网络服务器检索用户信息。
这是检索姓名和电子邮件地址的代码:
console.log($rootScope.userInfo.userName);
console.log($rootScope.userInfo.profile.name);
console.log($rootScope.userInfo.profile.upn);
下面是userInfo对象的结构图,供大家参考:
ClaimTypes.NameIdentifier
是每个用户唯一的 guid。如果您想要可读的用户名或电子邮件地址,请尝试 ClaimTypes.Email
或 ClaimTypes.Name
.
我正在尝试将 js 的 azure Active Directory 身份验证库集成到我的站点。我下载了 SPA 示例并使其与我的应用详细信息一起使用。
但是,如何将用户信息传回服务器?
例如,这是服务器端检索登录用户的示例代码:
string owner = ClaimsPrincipal.Current.FindFirst(ClaimTypes.NameIdentifier).Value;
IEnumerable<Todo> currentUserToDos = db.Todoes.Where(a => a.Owner == owner);
所有者字符串原来是一个类似于令牌的 GUID,而不是可读的用户名或电子邮件地址。
有没有办法直接使用这个库来检索用户名或电子邮件地址,或者我必须自己将其发送到服务器端?
是的,我们可以直接通过adal-angular.js从客户端获取用户信息。它已经将用户信息存储到 $rootScope 中。 userInfo,我们可以从它而不是从网络服务器检索用户信息。
这是检索姓名和电子邮件地址的代码:
console.log($rootScope.userInfo.userName);
console.log($rootScope.userInfo.profile.name);
console.log($rootScope.userInfo.profile.upn);
下面是userInfo对象的结构图,供大家参考:
ClaimTypes.NameIdentifier
是每个用户唯一的 guid。如果您想要可读的用户名或电子邮件地址,请尝试 ClaimTypes.Email
或 ClaimTypes.Name
.