首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >路由限制仅限于该用户和管理员

路由限制仅限于该用户和管理员
EN

Stack Overflow用户
提问于 2017-02-10 11:27:31
回答 1查看 1.1K关注 0票数 1

我试图让用户只显示他们的报告。未通过身份验证的用户显示其他用户报告。但是,管理员可以显示所有用户的报告。我有这样的路线:

代码语言:javascript
复制
Route::get('/showReport/{id}', 'CeciController@showReport');

我希望这条路由访问只有经过身份验证的用户,其中具有该报告id和管理员。如果我把它放在身份验证中间件组中,经过身份验证的用户可以访问其他用户报告。showReport/4showReport/5showReport/6。如果我把它放在管理中间件组下。即使是该id的认证用户也不能访问它。如何才能做到这一点呢?

查看:

Report for the month <b> {{$report->month}}: </b> <a href="{{url('/showReport', [$report->id])}}">Show Report Details</a>

下面是控制器:

代码语言:javascript
复制
public function showReport($id)
    {
        $report=Report::where('id',$id)->first();
        if($report)
        {
            return view('show_report')->with('report',$report);
        }      
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-10 11:57:34

您可以创建一个新的中间件,并检查通过身份验证的用户的id是否与给定的id参数匹配:

代码语言:javascript
复制
public function handle($request, Closure $next)
{
    # Allow only if the user is admin or id matches
    $user = Auth::user();
    if ($this->isAdmin($user) or ($request->input('id') === $user->id)) {
        return $next($request);
    }

    return response('Unauthorized.', 401);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42150994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档