【发布时间】:2019-05-13 11:54:35
【问题描述】:
我正在使用 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 时,它应该检查管理员用户的身份验证,如果用户已登录,那么它应该显示管理员仪表板,否则将他重定向到管理员登录页面: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>
请帮我解决。
【问题讨论】:
-
您可以使用middleware 来检查用户是否是管理员。
-
我正在将此中间件用于我的其他路由,但如果有人使用 url 直到只有管理员,这应该在我对该路由的关闭中。
-
如何创建一个像
RedirectIfNotAdmin这样的新中间件来包含您的管理员路由并检查用户是否为管理员? -
你使用的是什么操作系统?
-
@Laerte 我使用的是 Ubuntu 18.04
标签: php laravel apache .htaccess