在Laravel 5.4中,我为节目特定路线制作了一个自定义服务提供商。我的代码工作正常,但我遇到了一个问题。问题是,如果用户ABC
分配了两个路线(菜单' s),例如
user\list
user\form
现在,如果用户ABC
尝试调用user\show_form
之类的其他网址,那么用户ABC
就可以访问此路由(菜单)。因此,如果用户ABC无权访问user\show_form
并且用户尝试访问此路线(菜单),则可能会重定向到404页面。
我的服务提供商
class UserNavigationServiceProvider extends ServiceProvider {
/**
* Bootstrap the application services.
*
* @return void
*/
public function boot() {
$this->getUserNavigation();
}
/**
* Register the application services.
*
* @return void
*/
public function register() {
//
}
/**
* getUserNavigation() function use for after user login
* fetch the rights
* @return void
*/
private function getUserNavigation() {
$user_permission = user_permission();
View::composer('admin.navbar', function($view) use ($user_permission) {
$auth_user = Auth::user();
$user_id = $auth_user->id;
$user_group = UserPermissionsGroup::select('user_permissions_id')
->where('user_id', $user_id)
->get()
->toArray();
$menu = array();
foreach ($user_group as $k => $v) {
foreach($v as $kv) {
$menu[$kv] = id_to_text($kv, $user_permission);
}
}
$view->with('menu_list', $menu);
});
}
}
请建议我如何解决。
答案 0 :(得分:0)
您可以定义自定义请求类,并在其的authorize()方法中检查权限。或者,您可以添加中间件以授权请求并从该中间件重定向到404。
这个问题可能会对你有所帮助。 https://laracasts.com/discuss/channels/general-discussion/l5-middleware-or-authorize-method?page=1