当前位置: 首页 > 知识库问答 >
问题:

如果使用jwt auth登录,则控制器中的auth::user()为空

阳长恨
2023-03-14

在我的Laravel 5.8/vuejs 2.6应用程序中,我使用了“tymon/jwt auth”:“^1.0.0”,我的应用程序/Http/Controllers/AuthController.php具有以下方法:

public function login(Request $request)
{
    $credentials = $request->only('email', 'password');
    if ($token = $this->guard('api')->attempt($credentials)) {
        return $this->respondWithToken($token);
    }

    return response()->json(['error' => 'Unauthorized'], 401);
}

我把令牌放在客户端。它可以工作,但我想在保存数据时在服务器端添加更多检查,并在控件的方法中执行以下操作:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use Auth;
use DB;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Validator;

use App\Settings;
use App\Http\Traits\funcsTrait;
use App\Forum;
use App\ForumCategory;
use App\ForumThread;
use App\ForumPost;
use Illuminate\Routing\Controller as BaseController;

use App\User;
use App\library\CheckValueType;

use App\Http\Requests\ForumThreadRequest;
use JavaScript;


class ForumController extends BaseController
{
    use funcsTrait;

    public function __construct()
    {
        $this->middleware('auth');
    }


    public function add_new_thread(ForumThreadRequest $request)
    {

        $loggedUser = Auth::user();

        if ( empty($loggedUser->id) ) {
            return response()->json(['error_code'=> 1, 'message'=> "You must be logged!", 'forumThreadRow'=>null],HTTP_RESPONSE_INTERNAL_SERVER_ERROR);
        }
        try {

但是,即使我已经登录到系统,在add_new_线程方法中,$loggedUser看起来也是空的。我必须在AuthController.php的登录方法中执行一些附加操作,还是以哪种方式?

共有2个答案

王英彦
2023-03-14

这是一个迟到的答案,但也许可以帮助某人。

我也有同样的问题,通过向用户模型user.php添加$table属性,问题得到了解决

/**
 * Specify table name otherwise Auth::user() will return null
 *
 * @var string
 */
protected $table = 'users';

看这里

单勇
2023-03-14

当我使用api时,guard决定使用:

$user = Auth::guard('api')->user();
 类似资料:
  • 我正在使用laravel 5.4,Auth::login($user)显示类型错误: 传递给Illumb\Auth\SessionGuard::login()的参数1必须实现接口Illumb\Contracts\Authenticatable,给定的Illumb\Database\Eloquent\Builder实例,在第294行的/home/vendor/laravel/framework/sr

  • 我们正在使用WP JWT Auth插件从wp rest API将用户登录到WordPress。WP JWT Auth插件需要密码才能获取令牌,现在当我们集成Facebook登录时,我不确定如何让用户登录,因为我们不会有来自Facebook的密码。 有什么建议吗?

  • 控制台运行在具有nova-dashboard这一服务器角色的节点上。 向这个云服务的管理员咨询能登录控制台的主机名,IP地址,账号和密码。 打开一个启用了JavaScript和Cookies的浏览器。 注意: 如果要使用VNC客户端,你的浏览器需要支持HTML5 Canvas和HTML5 WebSockets。VNC浏览器基于noVNC。详情请查阅noVNC: HTML5 VNC Client。想

  • 在这一页你会找到一个 Auth 控制器的範例,你可以在你的应用程序中使用它来提供基本使用者认证, 无论是使用 Simpleauth 或 Ormauth。 Assumptions This example it taken from a real application and shows you the methods for login, logout, new user registratio

  • 当用户登录时,被设置,但是返回null。 这意味着我必须在需要访问用户的属性或方法的任何地方这样做: 有什么更好的解决方案?我是否可以在BaseController中设置,然后通过

  • 问题内容: 我在子模块中有一些基于注释的控制器。这些模块被部署为jar文件。 jar文件中基于注释的控制器未加载到spring配置。 我正在使用eclipse中的导出实用程序手动导出jar文件。 有没有人遇到过这个问题? 问题答案: 使用eclipse中的导出实用程序导出jar文件时,有一个选项称为添加目录项。选中此选项并导出jar文件,这将解决问题。