【发布时间】:2015-09-01 11:43:44
【问题描述】:
我正在开发一个带有管理面板的 Laravel 5.0 Web 应用程序。 我正面临路线问题。我有如下分组的管理路由,
Route::group(['prefix' => 'admin', 'namespace' => 'Admin', 'middleware' => ['user.admin']], function () {
Route::get('login', [
'as' => 'admin.login',
'uses' => 'AuthController@getLogin'
]);
Route::get('logout', [
'as' => 'admin.login',
'uses' => 'AuthController@getLogout'
]);
Route::post('login', 'AuthController@postLogin');
});
Route::group(['prefix' => 'admin', 'namespace' => 'Admin', 'middleware' => ['user.admin','auth', 'admin.acl']], function () {
Route::get('dashboard', [
'as' => 'admin.dashboard',
'uses' => 'DashboardController@index',
'permission' => 'admin_dashboard'
]);
//Image Handler
Route::get('images/{size}/{name?}',[
'as' => 'admin.images',
'uses' => 'ImagesController@images'
]);
Route::resource('user', 'UsersController');
........
});
一切正常。我可以毫无问题地使用以下功能,
http://domain.com/admin/dashboard
http://domain.com/admin/login
但我想要
http://domain.com/admin
显示登录页面或重定向到
http://domain.com/admin/login
所以我把我的第一组改为跟随,
Route::group(['prefix' => 'admin', 'namespace' => 'Admin', 'middleware' => ['user.admin']], function () {
Route::get('/', [
'uses' => 'AuthController@getLogin'
]);
Route::get('login', [
'as' => 'admin.login',
'uses' => 'AuthController@getLogin'
]);
Route::get('logout', [
'as' => 'admin.login',
'uses' => 'AuthController@getLogout'
]);
Route::post('login', 'AuthController@postLogin');
});
现在当我访问时
http://domain.com/admin
我在 chrome 中收到“此网页有重定向循环”。路由组可以吗?如果不是,如何使用 .htaccess 执行此操作?
更新
下面是中间件user.admin的handle方法。这只会改变身份验证的底层模型。
public function handle($request, Closure $next)
{
\Config::set('auth.table', 'admins');
\Config::set('auth.model', 'App\DB\Admin\Admin');
\Config::set('session.cookie', 'admin_session');
\Config::set('session.path', '/admin/');
return $next($request);
}
更新
这太棒了,下面的作品
http://domain.com/index.php/admin
我没有碰过laravel 5.0提供的默认.htaccess,如下图,
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
我有将近 60-70 条路线,在上述我需要 index.php 的情况下,它们都可以在没有 index.php 接受的情况下工作。
【问题讨论】:
-
请发布您的中间件
-
@Szenis- 谢谢。我已经更新了我的答案。
-
你能尝试最后声明'/'路由吗?我想知道评估路线的顺序是什么。
标签: php laravel-5 laravel-routing