我是 laravel 5.8 的新手,无法在 api 控制器中使用 Auth
,以下是详细信息:
- 我已将默认用户表从
users
更改为User
用户.php
<?php
namespace App;
use IlluminateNotificationsNotifiable;
use IlluminateContractsAuthMustVerifyEmail;
use IlluminateFoundationAuthUser as Authenticatable;
class User extends Authenticatable
{
use Notifiable;
protected $table = 'User';
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'firstName', 'lastName', 'email', 'password',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'email_verified_at' => 'datetime',
];
}
没有更改身份验证中的任何内容.php
<?php return ['defaults' => [ 'guard' => 'web', 'passwords' => 'users', ], 'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users', ], 'api' => [ 'driver' => 'token', 'provider' => 'users', 'hash' => false, ], ], 'providers' => [ 'users' => [ 'driver' => 'eloquent', 'model' => AppUser::class, ], // 'users' => [ // 'driver' => 'database', // 'table' => 'users', // ], ], 'passwords' => [ 'users' => [ 'provider' => 'users', 'table' => 'password_resets', 'expire' => 60, ], ], ];
我的问题:如何使 Auth::check(( 在此控制器中工作并获取用户 ID。这将返回Not logged
<?php
namespace AppHttpControllersapi;
use IlluminateHttpRequest;
use AppHttpControllersController;
use Session;
use DB;
use Response;
use Auth;
class AccountsController extends Controller
{
/**
* Display a listing of the resource.
*
* @return IlluminateHttpResponse
*/
public function index()
{
//
$userID = Auth::id();
if (Auth::check()) {
return "User logged , user_id : ".$userID ;
}else{
return "Not logged"; //It is returning this
}
}
}
我已经尝试了类似问题的几个答案(Q1 Q2(,但没有用。
如果使用 API 路由,则没有登录用户。 API的身份验证是通过令牌完成的,您可以在Laravel文档中阅读有关它的信息。
除非您使用 Web 路由,否则不会调用会话中间件,因此会话不会启动,因此无法使用身份验证。
您要实现什么,因为将身份验证与 API 路由一起使用是不正常的。
用户可以尝试在会话中设置身份验证用户。这将在身份验证后设置用户并设置 Auth::user((。
Auth::attempt(['email' => request('email'), 'password' => request('password')])
从控制器来看,您似乎正在尝试在使用 API 路由时访问会话。API 路由无权访问会话。应从 web.php
中定义的路由调用控制器,或者应使用令牌进行身份验证。查阅 Laravel 文档以探索 API 身份验证的可能性。