繁体   English   中英

如何阻止相同类型的用户访问Laravel中的其他数据?

How to block same type of users accessing others data in Laravel?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我的项目有两种类型的用户,管理员和客户。 我需要阻止客户端通过URL传递ID来访问其他客户端详细信息,如下所述。 在这个客户中,有两个类别,高级客户和客户客户。 这里我也需要上面的功能。 我使用过滤器将管理员和客户端路由到不同的仪表板。 我的filter.php文件如下所示。

Route::filter('auth', function()
{
    if (Auth::guest())
    {
        if (Request::ajax())
        {
            return Response::make('Unauthorized', 401);
        }
        else
        {
            return Redirect::route('home');
        }
    }
});

Route::filter('admin', function()
{
    if (Auth::user()->isAdmin != 0) return Redirect::route('getLogout');
});
Route::filter('client', function()
{
    if (Auth::user()->isAdmin != 1) return Redirect::route('getLogout');
});

Thsi工作正常。

但是,如果客户端尝试通过URL访问其他客户端详细信息,他将获得它。 例如,在我的项目中有一个访问客户端配置文件的URL。 这是通过像“localhost / public / profile / {id}”这样的url传递客户端ID来完成的。 route.php文件的一部分如下。

Route::group(array('before' => 'auth'), function()
{
     Route::group(array('before' => 'auth|client'), function() 
     {
        Route::get('profile/{id}', array('uses' => 'ClientController@viewProfile', 'as' =>'viewProfile'));
     });
});

如何使用过滤器或其他方法阻止客户端访问其他客户端配置文件? 我尝试在控制器中指定,但它看起来不太好。

同样在我的客户中,有两种类型的客户。 高级客户和客户。 这些类型在名为Client的模型中为表名为clients的客户端指定。 在clients表中有一个名为type的字段。 我需要阻止访客客户端访问高级客户端可以访问的某些URL。

谁能帮忙?

1 个回复

基本思路是创建一个自定义过滤器 ,获取当前用户的ID,将其与请求中的用户ID进行比较,然后采取必要的操作,这可能是重定向到其他地方。 将此包裹在您希望其影响的任何路线周围。

过滤器看起来像这样:

Route::filter('profile_access', function($route, $request, $value)
{
    $requestedId = $route->getParameter('id');
    $userId = MyUserService::getCurrentUser()->getId();

    // compare and redirect...
});
1 在Laravel中为不同类型的用户使用相同的路由

我的申请将有医生,患者和管理员 现在我希望所有角色都有相同的路线。 如下: 但是我希望有一个不同的控制器用于患者,一个用于医生的外出。 我试过以下但没有成功 }); 我的角色中间件导致403(未经授权)错误。 即便没有,我认为它只是覆盖了另一个? 有没 ...

3 在Laravel中处理不同类型的用户角色

我有一个Web项目,其中包含3种类型的用户,例如root admin,super admin和kitchen admin。 每个用户或角色具有不同的功能:root管理员将创建超级管理员和其他小功能,超级管理员将创建厨房管理员和其他功能的方式相同,而厨房管理员具有自己的功能,例如处理订单。 ...

4 如何在Laravel中为两种不同类型的用户提供相同的功能?

我想为两种不同类型的用户提供创建相同事件的能力,但是事件需要user_id,这两种不同类型的用户可以共享。 我正在Laravel中创建一个应用程序,其中两个不同类型的用户,即播放器和供应商,每个都可以创建一个事件。 播放机 供应商 事件 问题是玩家和供应商都可 ...

5 阻止用户访问Laravel中的某些路线

在Laravel应用程序上工作,我有一些路由,这些路由具有多步形式。 在访问或填写先前的路由之前,我需要防止用户访问最后的路由(该路由指向表单的最后一页)。 路线 ...

8 在联合中访问相同类型的非活动成员

我有这样的事情: 我有一些这些的向量,是通用工作区内存,我在语义上下文之后相应地使用字段。 我知道,当最后一个活动成员是另一个字段(并且键入?)时,读取联合中的字段是未定义的行为。 类型和布局完全匹配时,这是否重要? 我一直在评论其他一些类似的问题,要求提供保证行为的参考资 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM