我正在使用Laravel9,试图分离前端和后端。我做了很多替换,比如app\Http更改为app\前端\Http或app\Backend\Http。
我以前做过分离,成功了。现在我不能登录或退出。但欢迎页面没问题。也许这是因为路线文件?
Auth::routes();路由/web.php的所有内容
<?php
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::group(
[
'prefix' => LaravelLocalization::setLocale(),
'middleware' => [ 'localeSessionRedirect', 'localizationRedirect', 'localeViewPath' ],
], function()
{
Route::get('/', function () {
return view('welcome');
});
Auth::routes();
Route::get('/home', [App\Frontend\Http\Controllers\HomeController::class, 'index'])->name('home');
});我也这样做了:
composer dump-autoload
php artisan clear-compiled
php artisan route:clear
php artisan cache:clear不起作用。
LoginController
<?php
namespace App\Frontend\Http\Controllers\Auth;
use App\Frontend\Http\Controllers\Controller;
use App\Frontend\Providers\RouteServiceProvider;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
class LoginController extends Controller
...发布于 2022-05-30 18:38:01
laravel/ui包的Auth路由是在AuthRouteMethods类中硬编码的。这是它的方法的零件,它来自Github存储库。
$namespace = class_exists($this->prependGroupNamespace('Auth\LoginController')) ? null : 'App\Http\Controllers';
$this->group(['namespace' => $namespace], function() use($options) {
// Login Routes...
if ($options['login'] ?? true) {
$this->get('login', 'Auth\LoginController@showLoginForm')->name('login');
$this->post('login', 'Auth\LoginController@login');
}
// more code它确保Auth路由将位于Theme\Http\Controllers的“默认”命名空间之下。但是,如果将它包装在一个组中,您可以更改它,如
Route::group(['namespace' => 'App\Frontend\Http\Controllers'], function () {
Auth::routes();
});这样,您就可以在它前面加上组命名空间,这样包就可以为每个其他auth控制器找到App\Frontend\Http\Controllers\Auth\LoginController类等等。
Note 1 -所有控制器都应该在Auth命名空间下,并按照包中定义的具体名称命名,您不能将其更改为与App\Whatever\LoginController或Auth\Whatever\Auth\MyLoginController类似,但可以使用App\Whatever\Auth\LoginController来实现。
Note 2 --这将不适用于RouteServiceProvider类中未注释的protected $namespace = 'App\\Http\\Controllers';属性,因为它将两次在名称空间前面(您将得到类似于App\Http\Controllers\App\Frontend\Http\Controllers\Auth\LoginController的内容)
https://stackoverflow.com/questions/72438223
复制相似问题