You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure App Service部署的Laravel应用中获取已认证用户的邮箱ID?

在Azure App Service的Laravel应用中获取Azure AD登录用户的邮箱和用户名

因为你已经完成Azure AD认证配置且应用运行正常,以下是两种直接获取用户邮箱和用户名的方式:

方法1:通过Laravel Auth facade获取

如果你的Laravel应用是通过Socialite或Azure AD官方集成包实现的认证,登录后Auth::user()会返回包含Azure AD用户信息的实例,直接提取对应字段即可:

// 获取登录用户实例
$user = Auth::user();

// 提取邮箱ID
$userEmail = $user->email;

// 提取仅名称(按需选择)
// 仅名(given_name)
$userName = $user->given_name;
// 全名(名+姓)
$fullName = $user->given_name . ' ' . $user->family_name;

注意:

要确保Azure AD应用注册中已配置User.Read权限,并且在ID令牌中包含email、given_name、family_name这些Claims——可在应用注册的「令牌配置」页面添加可选Claims来确保这些字段被返回。

方法2:直接读取Azure App Service注入的请求头

Azure App Service的Easy Auth会将用户认证信息注入请求头,你可以直接读取头部信息获取数据:

// 从请求头直接获取邮箱
$userEmail = request()->header('X-MS-CLIENT-PRINCIPAL-NAME');

// 解析完整的用户Claims JSON
$principalJson = request()->header('X-MS-CLIENT-PRINCIPAL');
$principalData = json_decode($principalJson, true);

// 遍历Claims提取用户名(given_name)
$userName = '';
foreach ($principalData['claims'] as $claim) {
    if ($claim['typ'] === 'given_name') {
        $userName = $claim['val'];
        break;
    }
}

展示与记录操作示例

拿到信息后,可直接用于页面展示或操作日志记录:

// 示例:写入操作日志
\Log::info('用户完成文件上传操作', [
    'user_email' => $userEmail,
    'user_name' => $userName,
    'action_time' => now()->toDateTimeString()
]);

// 示例:传递到视图展示
return view('dashboard', [
    'userEmail' => $userEmail,
    'userName' => $userName
]);

内容的提问来源于stack exchange,提问作者Harpreet Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 21:00:08