我使用本教程https://www.itsolutionstuff.com/post/laravel-9-authentication-using-breeze-tutorialexample.html安装了Laravel
登录和注册表单都在那里,http://localhost:8000/login,但是登录后,如果我进入中间件内部的路由(http://localhost:8000/api/categories),我将被重定向到主页。如果我有中间件之外的路由,它可以工作,但不需要登录。
** Works ** (至少“类别”视图显示)
Route::controller(App\Http\Controllers\API\CategoryController::class)->group(function(){
Route::get('categories', 'index')->name('categories.index')
});**不工作** (重定向到主视图)
Route::group(['middleware' => 'auth:api'], function(){
Route::controller(App\Http\Controllers\API\CategoryController::class)->group(function(){
Route::get('categories', 'index')->name('categories.index')
});
});**类别主计长**
<?php
namespace App\Http\Controllers\API;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\Category;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Log;
class CategoryController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$cat = $this->getCategories();
return response()->json($cat);
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
$cat = $this->getCategories();
return view('create-category',compact('cat'));
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
return Auth::user();
$category = Category::firstOrCreate(
['name' => $role_name],
['guard_name' => 'api']
);
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
$cat = $this->getCategories($id);
// $cat = Category::where('id', $id)->get()->keyBy('id');
return response()->json($cat);
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
public function getParentCategory($id) {
$cat = Category::where('id', $id)->get()->keyBy('id');
return $cat;
}
public function getChildCategory($id, $keyBy = null) {
// return $keyBy;
$cat = Category::where('parent_id', $id)->get()->keyBy('id');
return $cat;
}
private function setKeyBy($collection, $name) {
$collection = $collection->keyBy($name);
return $collection;
}
public function getCategories($category_id = null) {
$cat = Category::where('id', '>', 0);
if(!is_null($category_id)) {
$cat = $cat->where('id', $category_id)->get()->keyBy('id');
} else {
$cat = $cat->whereNull('parent_id')->get()->keyBy('id');
foreach($cat as $catID=>$catArray) {
$subCat = $this->getChildCategory($catID, 'id');
// $subCat = $subCat->keyBy('id');
if ($subCat->first()) {
$cat[$catID]['subcat'] = $subCat;
}
}
}
return $cat;
}
public function createCategoryForm() {
$cat = $this->getCategories();
return view('create-category',compact('cat'));
}
public function categoryDropown($child_id = null) {
$cat = $this->getCategories();
}
public function categoryChildDropown($child_id) {
$cat = Category::where('parent_id', $child_id)->get();
return $cat;
}
}我使用Laravel已经有一段时间了,但是这是我第一次用Auth从头开始创建一个应用程序。我不知道我错过了什么。提亚
发布于 2022-11-16 22:07:37
你可以试试这个:
$router->group(['middleware' => 'auth'], function() use ($router) {
Route::controller(App\Http\Controllers\API\CategoryController::class)->group(function(){
Route::get('categories', 'index')->name('categories.index')
});
});发布于 2022-11-18 00:57:26
感谢Dream Bold为我指明了正确的方向。我应该发布web.php和api.php文件的。我在这里找到了答案https://stackoverflow.com/a/35162656/1198563
当我将api.php迁移到web.php、web中间件组和api中间件组时,我就有了它的路由。
Route::group(['middleware' => 'web'], function () {
Route::auth();
// Moving here will ensure that sessions, csrf, etc. is included in all these routes
Route::group(['prefix' => 'api', 'middleware' => 'auth'], function () {
Route::controller(App\Http\Controllers\API\CategoryController::class)->group(function () {
Route::get('categories', 'index')->name('categories.index');//->middleware('auth');
});
});
});https://stackoverflow.com/questions/74467699
复制相似问题