Laravel自动注销过滤器问题

时间:2015-04-16 11:57:47

标签: laravel laravel-5 laravel-filters

我需要一些过滤器来将用户重定向到特定的控制面板,如管理员将转到他的管理面板,编写器将转到他的编写区...所以我定义了一些过滤器 没有这些过滤器的用户不会自动注销,但使用这些过滤器时用户自动注销甚至导航一页到第二页用户自动注销。

我的代码有问题吗?

以下是代码:

路线

Route::filter('allow_only_admin', function()    {
    if (Session::get('role') !== "admin" ){
        if (Session::get('role') == 'writer') {
            return Redirect::route('windex');
        }
    }   });

Route::filter('allow_only_writer', function()
{
    if (Session::get('role') !== "writer" ){
        if (Session::get('role') == 'admin') {
            return Redirect::route('orders.all');
        }
    }
});
Route::group(['prefix' => 'writer','before'=>'allow_only_writer'], function()
{
    Route::get('index', ['as' => 'windex', 'uses'   => 'Writer@showIndex']);
});

2 个答案:

答案 0 :(得分:0)

试试这个

Route::filter('allow_only_admin', function(){
    if (Auth::check() && Auth::user()->role !== "admin" && Auth::user()->role == 'writer' ){
            return Redirect::route('windex');
    }
    return Redirect::route('home or somewhere');
});

Route::filter('allow_only_writer', function(){
    if (Auth::check() && Auth::user()->role !== "writer" &&  Auth::user()->role == 'admin'){
            return Redirect::route('orders.all');
    }
    return Redirect::route('home or somewhere');
});

N.B :如果用户无法拥有多个角色,那么您就不想同时检查Auth::user()->role !== "admin" && Auth::user()->role == 'writer' 只有一个就足够了

Auth::user()->role == 'writer'

答案 1 :(得分:0)

尝试这样的事情,我没有测试这段代码

Route::filter('no_auth', function(){
        if(Auth::check()){
            if(!Auth::user()->is('admin')){
                return Redirect::route('routename');
            }

            if(!Auth::user()->is('writer')){
                return Redirect::route('routename');
            }

        }
    });