php - Auth::id() 找不到用户 id 并返回 null,laravel
问题描述
我在文章上设置喜欢和不同的选项。但在 LikeController 中存在问题。当我按下喜欢按钮时,它会说->
SQLSTATE [23000]:完整性约束违规:1048 列 'user_id' 不能为空(SQL:插入
likes
(user_id
,article_id
,updated_at
,created_at
) 值 (?, 5, 2019-05-30 07:58:34, 2019-05-30 07 :58:34))
更新了 JWT 和路由
喜欢的型号:
class Like extends Model
{
public $timestamps = true;
public $with = ["user"];
protected $fillable = ["user_id", "article_id"];
public function article()
{
return $this->belongsTo("App\Article");
}
public function user()
{
return $this->belongsTo("App\User");
}
}
和 LikeController:
use Auth;
use App\Article;
use App\Like;
public function like($id)
{
$article = Article::find($id);
$like = Like::create([
"user_id" => Auth::id(),
"article_id" => $article->id
]);
return Like::find($like->id);
}
public function unlike($id)
{
$article = Article::find($id);
Like::where("user_id", Auth::id())
->where("article_id", $article->id)
->first()
->delete();
return 1;
}
我不太清楚为什么Auth::id()
找不到用户ID并返回null?
在 vue.js 中使用 JWT
路线:
Route::group(['prefix' => 'auth'], function ($router) {
Route::post('register', 'AuthController@register');
Route::post('login', 'AuthController@login');
Route::post('logout', 'AuthController@logout');
Route::post('refresh', 'AuthController@refresh');
Route::post('me', 'AuthController@me');
});
Route::get("/like/{id}", [
"uses" => "LikeController@like"
]);
Route::get("/unlike/{id}", [
"uses" => "LikeController@unlike"
]);
AuthController和用户
设置控制器和用户模型我遵循了文档:https ://jwt-auth.readthedocs.io/en/develop/quick-start/
解决方案
您似乎没有使用身份验证保护您的 LikeController 路由。
除非你的LikeController
for 构造函数中有这样的东西:
public function __construct()
{
$this->middleware('auth:api');
}
那么你应该像这样保护你的 LikeController 路由:
Route::group([
'middleware' => 'api',
], function ($router) {
Route::get("/like/{id}", [
"uses" => "LikeController@like"
]);
Route::get("/unlike/{id}", [
"uses" => "LikeController@unlike"
]);
});
那么使用登录的正确方法是
auth('api')->user()
或者
Auth::guard('api')->user()
推荐阅读
- python - TypeError:需要一个整数(获取类型元组)|| python中的网站阻止代码
- apache - Apache不断自行关闭,没有日志错误
- react-native - 无法导航到另一个屏幕
- php - 我在 phpmyadmin 中使用存储过程来计算图书馆管理系统的罚款
- azure - Azure 存储:SAS 令牌是否可以在其到期日期之前到期?
- android - (android) 为什么主题的样式只部分适用?
- postgresql - “;”处或附近的语法错误 第 22 行 - Postgresql
- python - 如何对 pandas 的输出进行子集包含语句以提供所有 True 值?
- react-native - Stack.Screen 中的 React Native 多个选项(参数标题 + headerRight 按钮)
- python - 允许用户仅输入 django 模型创建表单的一部分(用户提交后添加到表单)