簡體   English   中英

如何在laravel中將路由前綴重定向到另一條路由?

[英]How to redirect a route prefix to another route in laravel?

我正在使用laravel 5.7。 請查看我的代碼:

web.php

Route::prefix('admin')->group(function () {
        Route::get('/', function () {
           return redirect()->route('admin.check');
       });
Route::get('/check-auth', 'Admin\AdminController@checkAuth')->name('admin.check');
});

AdminController::checkAuth()

public function checkAuth()
    {
        if(true == Auth::guard('admin')->user()){
            return redirect()->route('cs.dashboard');
        } else{
            return redirect()->route('admin.login');
        }
    }

我創建了一組前綴為admin的路由。

我需要的是,當我使用url localhost:8000/admin它應檢查admin用戶的身份驗證,如果用戶已登錄,則應顯示admin儀表板,否則將其重定向到admin登錄頁面: localhost:8000/admin/login但這里的問題是我收到apache錯誤,內容為:

Not Found
The requested resource /admin was not found on this server.

我還嘗試使用htaccess文件將其放置在root/public/admin位置,它某種程度上解決了我的問題,但是我必須使用此url。

localhost:8000/index.php/admin

而且我的網址中不需要index.php。

這是我的.htaccess文件的外觀:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

請幫我解決。

檢查用戶是否通過身份驗證的正常方法是中間件

在您的情況下,當您轉到以下位置時,將運行check-auth: localhost:8000/admin/localhost:8000/admin/check-auth否則laravel將不會檢查身份驗證。

請查看Laravel中間件。

我認為最好的方法是使用中間件來檢查登錄用戶是否為admin,這將使您的代碼比現在更美觀。您只需要使中間件檢查它是否為admin。如果是管理員,則返回$next($request) ,如果不重定向至其他頁面,則更改代碼。

 Route::prefix('admin')->group(function () {
        Route::get('/', 'AdminController@index');
});

然后創建管理控制器並添加索引功能,例如

public function __construct()
{
    $this->middleware('admin');
}

public function index()
{
    return view('adminpage');
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM