php - 如何根据 sanctum auth 中间件故障为同一路由调用不同的函数?
问题描述
我有路线
/** PROTECTED ROUTES */
Route::group(['middleware' => ['auth:sanctum']], function () {
Route::post('/cart/add-product', [CartController::class, 'addProductToCart']);
});
如果用户已通过身份验证,则此路线应将产品添加到 UserCart,即我们可以借助$request->user()
.
如果用户未通过身份验证,前端将提供唯一的 user_id。
基于此,我希望路由保持不变,但调用的函数应该不同,这样,如果用户通过身份验证,产品将被添加到他们的 UserCart 中,否则它将被添加到他们的 TemporaryCart
解决方案
只需删除中间件并在控制器中检查它。控制器应该做什么是正确的:)
只是一点点改进,你可以这样做:
Route::post('/cart/add-product', 'CartController@addProductToCart');
在你的控制器中,你可以有这样的东西。(不要复制它只是为了灵感)
public function addProductToCart(Request $request, $id) {
if (!empty($id)) {
return $this->handleNewUser();
else
return $this->handleAuthUser();
}
private function handleNewUser() {
//add to temporary cart
}
private function handleAuthUser() {
//add to users cart
}
推荐阅读
- java - 什么是 VAN 以及如何使用 JAVA 通过 VAN 传输文件?
- r - data.table 合并 R 中不同列的部分匹配
- r - 使用 FASTA 标头查询 UniProt 和 RefSeq 数据库
- python - 杀死一个包含python脚本的批处理文件
- sql - 以 oracle 形式获取逗号分隔的数据
- json - '+' 字符在 HttpParams angular 6 中转换为空格
- python-3.x - 从字符中删除元音的函数
- docker - Kubernetes 初始化容器 pip install
- performance-testing - 将 Taurus 与 Gatling 一起使用失败,并出现“线程“主”io.gatling.core.session.el.ElParserException 中的异常”
- java - 根据 Thymeleaf 中的特定条件使图像可点击