问题描述
我们如何获取使用 Microsoft Identity 连接到 Azure 应用服务的用户的电子邮件?
我们的前端构建在 React 之上,而我们的后端构建在 Node.js 之上。
谢谢, 克里斯托夫
解决方法
最后,调用 /.auth/me
REST 端点以从响应数据中检索用户声明就足够了。
import axios from "axios";
const _ = require("lodash");
export function hasRoleReaders(userDetails) {
return hasRole(userDetails,"readers");
}
export function hasRoleWriters(userDetails) {
return hasRole(userDetails,"writers");
}
function hasRole(userDetails,expectation) {
const found = _.find(userDetails.roles,function (role) {
return role.val === expectation;
});
return found !== undefined;
}
export async function getUserDetails() {
return axios.get("/.auth/me")
.then(response => {
const datum = response.data[0];
const userId = datum.user_id;
const userClaims = datum.user_claims;
const name = _.find(userClaims,function (userClaim) {
return userClaim["typ"] === "name";
});
const roles = _.filter(userClaims,function (userClaim) {
return userClaim["typ"] === "roles";
});
return {
"userId": userId,"name": name,"userClaims": userClaims,"roles": roles
};
})
.catch(reason => {
console.log(reason);
return {
"userId": "na","name": "na","userClaims": [],"roles": []
};
});
}