首页 > 解决方案 > 未找到获取列:1054 未知列“”在“where 子句”中用于 laravel 护照身份验证

问题描述

我正在研究 laravel 护照认证。我的 laravel 版本是 6.0,护照版本是 8.0

用户.php

    <?php

namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Support\Facades\Hash;
use Illuminate\Notifications\Notifiable;
use DB;
use Auth;
use Session;
use Laravel\Passport\HasApiTokens;
use Spatie\Permission\Traits\HasRoles;

class User extends Authenticatable  
{
    use Notifiable, HasApiTokens, HasRoles;
 
    protected $fillable = [
        'id', 'name', 'email', 'password', 'phone', 'address_line_1',
        'address_line_2', 'city', 'pincode', 'user_id',
    ];

    
    protected $hidden = [
        'password', 'remember_token',
    ];

    protected $rememberTokenName = 'remember_token';

    protected $casts = [
        'email_verified_at' => 'datetime',
    ];

    public function getAuthIdentifierName() {}
    public function getAuthIdentifier(){}
   
    public function setRememberToken($value){}
    public function getRememberTokenName(){}

    public function getAuthPassword() {
        return $this->getAttribute('password');
    }


    public function getReminderEmail() {
        return $this->getAttribute('email');
    }


    public function getRememberToken() {
        return $this->getAttribute('remember_token');
    }
}

配置/app.php

Laravel\Passport\PassportServiceProvider::class,

authServiceProvider.php

use Laravel\Passport\Passport;
use Carbon\Carbon;

class AuthServiceProvider extends ServiceProvider
{
    /**
     * The policy mappings for the application.
     *
     * @var array
     */
    protected $policies = [
        // 'App\Model' => 'App\Policies\ModelPolicy',
    ];

    /**
     * Register any authentication / authorization services.
     *
     * @return void
     */
    public function boot()
    {
        $this->registerPolicies();
        Passport::routes();
        Passport::tokensExpireIn(Carbon::now()->addDays(1));
        Passport::refreshTokensExpireIn(Carbon::now()->addDays(10));
    }

配置/auth.php

    'guards' => [
            'web' => [
                'driver' => 'session',
                'provider' => 'users',
            ],
    
            'api' => [
                'driver' => 'passport',
                'provider' => 'users',
            ],    
        ],
'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\User::class,
        ],
    ],

AuthAPI控制器

 public function signup(Request $request)
    {
        $request->validate([
            'name' => 'required|string',
            'email' => 'required|string|email|unique:users',
            'password' => 'required|string|confirmed'
        ]);
        $user = new User([
            'name' => $request->name,
            'email' => $request->email,
            'password' => bcrypt($request->password)
        ]);
        $user->save();
        return response()->json([
            'message' => 'Successfully created user!'
        ], 201);
    }
  
    /**
     * Login user and create token
     *
     * @param  [string] email
     * @param  [string] password
     * @param  [boolean] remember_me
     * @return [string] access_token
     * @return [string] token_type
     * @return [string] expires_at
     */
    public function login(Request $request)
    {
        $request->validate([
            'email' => 'required|string|email',
            'password' => 'required|string',
            'remember_me' => 'boolean'
        ]);
        $credentials = request(['email', 'password']);
        if(!Auth::attempt($credentials))
            return response()->json([
                'message' => 'Unauthorized'
            ], 401);
        $user = $request->user();
        $tokenResult = $user->createToken('Personal Access Token');
        $token = $tokenResult->token;
        if ($request->remember_me)
            $token->expires_at = Carbon::now()->addWeeks(1);
        $token->save();
        return response()->json([
            'access_token' => $tokenResult->accessToken,
            'token_type' => 'Bearer',
            'expires_at' => Carbon::parse(
                $tokenResult->token->expires_at
            )->toDateTimeString()
        ]);
    }

api.php

  Route::group([
    'prefix' => 'auth'
], function () {
    Route::post('login', 'Auth\AuthAPIController@login');
    Route::post('sign-up', 'Auth\AuthAPIController@signup');
  
    Route::group([
      'middleware' => 'auth:api', 'cors', 'json.response'
    ], function() {
        Route::get('/all-slider-images', 'HomeController@getSliderImages');
        Route::get('/user', 'Auth\AuthAPIController@user');
       
    });
   
    
});

家庭控制器.php

public function getSliderImages(){
        try{
            $images = SliderImage::where("deleted", 0)->get();
            return response()->json(["status"=>200, "data"=> $images]);
        }catch(Extension $e){
            return response()->json(["status"=>500, "data"=> "System Error! Please try again!"]);
        }         
    }

这是我的日志文件

[2020-12-18 12:11:20] local.ERROR: SQLSTATE[42S22]: Column not found: 1054 Unknown column '' in 'where clause' (SQL: select * from `users` where `` = 28 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 42S22): SQLSTATE[42S22]: Column not found: 1054 Unknown column '' in 'where clause' (SQL: select * from `users` where `` = 28 limit 1) at C:\\xampp\\htdocs\\pressbell\\vendor\\laravel\\framework\\src\\Illuminate\\Database\\Connection.php:665)

[stacktrace] #0 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Database\Connection.php(625): Illuminate\Database\Connection->runQueryCallback('select * from...', Array, Object(Closure)) #1 C:\\xampp\\htdocs\\pressbell\\vendor\\laravel\\framework\\src\\Illuminate\\Database\\Connection.php(334): Illuminate\\Database\\Connection->run('select * from ...', Array, Object(Closure)) #2 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Database\Query\Builder.php(2140): Illuminate\Database\Connection- >select('select * from `...', Array, true) #3 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Database\Query\Builder.php(2128): 照亮\Database\Query\Builder->runSelect() #4 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Database\Query\Builder.php(2572): Illuminate\Database\Query\Builder ->Illuminate\Database\Query\{closure}() #5 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Database\Query\Builder.php(2129): Illuminate\Database\Query \Builder->onceWithColumns(Array, Object(Closure)) #6 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Builder.php(521):Illuminate\Database\Query\Builder->get(Array) #7 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Builder.php(505): Illuminate\Database\Eloquent \Builder->getModels(Array) #8 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Database\Concerns\BuildsQueries.php(143): Illuminate\Database\Eloquent\Builder->get (数组)#9 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Auth\EloquentUserProvider.php(52): Illuminate\Database\Eloquent\Builder->first() #10 C:\ xampp\htdocs\pressbell\vendor\laravel\passport\src\Guards\TokenGuard.php(139): Illuminate\Auth\EloquentUserProvider->retrieveById('28') #11 C:\xampp\htdocs\pressbell\vendor\laravel \passport\src\Guards\TokenGuard.php(94): Laravel\Passport\Guards\TokenGuard->authenticateViaBearerToken(Object(Illuminate\Http\Request)) #12 C:\xampp\htdocs\pressbell\vendor\laravel\passport\src\PassportServiceProvider.php(277): Laravel\Passport\Guards\TokenGuard->user(Object( Illuminate\Http\Request)) #13 [内部函数]: Laravel\Passport\PassportServiceProvider->Laravel\Passport\{closure}(Object(Illuminate\Http\Request), NULL) #14 C:\xampp\htdocs\pressbell \vendor\laravel\framework\src\Illuminate\Auth\RequestGuard.php(58): call_user_func(Object(Closure), Object(Illuminate\Http\Request), NULL) #15 C:\xampp\htdocs\pressbell\vendor \laravel\framework\src\Illuminate\Auth\GuardHelpers.php(60): Illuminate\Auth\RequestGuard->user() #16 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Auth \Middleware\Authenticate.php(62): Illuminate\Auth\RequestGuard->check() #17 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Auth\Middleware\Authenticate.php(41): Illuminate\Auth\Middleware\Authenticate->authenticate(Object(Illuminate\Http\Request), Array) #18 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(171): Illuminate\Auth\Middleware\Authenticate->handle(Object(Illuminate\Http\Request), Object(Closure), 'api') #19 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(105): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\ {closure}(Object(Illuminate\Http\Request)) #20 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Routing\Router.php(682): Illuminate\Pipeline\Pipeline-> then(Object(Closure)) #21 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Routing\Router.php(657):Illuminate\Routing\Router->runRouteWithinStack(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request)) #22 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Routing\ Router.php(623): Illuminate\Routing\Router->runRoute(Object(Illuminate\Http\Request), Object(Illuminate\Routing\Route)) #23 C:\xampp\htdocs\pressbell\vendor\laravel\framework \src\Illuminate\Routing\Router.php(612): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request)) #24 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src \Illuminate\Foundation\Http\Kernel.php(176): Illuminate\Routing\Router->dispatch(Object(Illuminate\Http\Request)) #25 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src \Illuminate\Pipeline\Pipeline.php(130): Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http\{closure}(Object(Illuminate\Http\Request)) #26 C:\xampp\htdocs\pressbell\app\Http\Middleware\Cors.php(18): Illuminate\Pipeline\Pipeline-> Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) #27 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(171): App\Http \Middleware\Cors->handle(Object(Illuminate\Http\Request), Object(Closure)) #28 C:\xampp\htdocs\pressbell\app\Http\Middleware\ForceJsonResponse.php(19): Illuminate\Pipeline\ Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) #29 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(171): App\Http\Middleware\ForceJsonResponse->handle(Object(Illuminate\Http\Request), Object(Closure)) #30 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\TransformsRequest.php(21): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http \Request)) #31 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(171): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Illuminate \Http\Request), Object(Closure)) #32 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\TransformsRequest.php(21): Illuminate\Pipeline\Pipeline ->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) #33 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(171): Illuminate \Foundation\Http\Middleware\TransformsRequest->handle(Object(Illuminate\Http\Request),Object(Closure)) #34 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\ValidatePostSize.php(27): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\ {closure}(Object(Illuminate\Http\Request)) #35 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(171): Illuminate\Foundation\Http\Middleware \ValidatePostSize->handle(Object(Illuminate\Http\Request), Object(Closure)) #36 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode.php (62): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) #37 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Pipeline \Pipeline.php(171): Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode->句柄(对象(Illuminate\Http\Request),对象(Closure))#38 C:\xampp\htdocs\pressbell\vendor\fideloper\proxy\src\TrustProxies.php(57): Illuminate\Pipeline\Pipeline->Illuminate \Pipeline\{closure}(Object(Illuminate\Http\Request)) #39 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(171): Fideloper\Proxy\ TrustProxies->handle(Object(Illuminate\Http\Request), Object(Closure)) #40 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(105): 照亮\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) #41 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel. php(151): Illuminate\Pipeline\Pipeline->then(Object(Closure)) #42 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php(116): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request)) #43 C:\xampp\htdocs\pressbell\public\index.php(55): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request)) #44 C:\xampp\htdocs\pressbell\server .php(21): require_once('C:\\xampp\\htdocs...') #45 {main}

但我得到这个错误,

“消息”:“SQLSTATE [42S22]:未找到列:1054 'where 子句'中的未知列''(SQL:select * from userswhere ``= 28 限制 1)”,“异常”:“Illuminate\Database\QueryException ",

这是登录 API

这是错误

标签: laravelauthenticationlaravel-passport

解决方案


从 中删除所有这些覆盖App\User.php。除非您使用与默认值不同的任何东西,否则它不是必需的。此外,您不会在这些函数中返回任何内容。

public function getAuthIdentifierName() {}
public function getAuthIdentifier(){}

public function setRememberToken($value){}
public function getRememberTokenName(){}

推荐阅读