如何在Controller中获取当前登录用户的邮箱
Laravel控制器中获取当前登录用户邮箱的正确方法
你遇到的问题原因很直接:auth()返回的Auth门面实例只封装了id()这个快捷方法,并没有提供email()方法,所以直接调用auth()->email()会触发方法不存在的错误。
以下是几种正确获取当前登录用户邮箱的方式:
通过Auth门面获取用户实例后取邮箱
先调用user()方法拿到当前登录用户的模型实例,再访问email属性:$email = auth()->user()->email;注意:如果用户未登录,
auth()->user()会返回null,直接访问email会报错,建议先判断用户是否登录:if (auth()->check()) { $email = auth()->user()->email; } else { // 处理未登录的情况 }通过Request对象获取
也可以通过请求上下文直接获取用户实例:$email = request()->user()->email;同样需要确保用户已登录,避免null调用错误。
依赖注入(推荐)
在控制器方法中注入用户认证契约或你的User模型,Laravel会自动注入当前登录用户实例:use Illuminate\Contracts\Auth\Authenticatable; public function yourControllerMethod(Authenticatable $user) { $email = $user->email; }这种方式更符合依赖注入原则,代码可测试性更强,适合大型项目。
内容的提问来源于stack exchange,提问作者Website Testing
相关产品推荐
相关产品推荐

