【问题标题】:Laravel 5 make the routes know that I am an sending Authorized requestLaravel 5 让路由知道我是发送授权请求
【发布时间】:2017-03-14 00:49:50
【问题描述】:

我被这个问题困扰了几天。我正在使用 snappy 库从控制器内部的函数发出请求,以将页面的一部分转换为 pdf。我的计划是这样的:

使用$snappy->getOutput('http://myapp.com/campaign/21859866de/'); 截取页面并将其转换为 pdf,但每当我使用它时,它都会截取登录页面。 - 即使它对应用程序不利,我试图从 CSRF 验证中排除该路由,但登录页面仍然显示在生成的 pdf 上:(

您的建议将非常受欢迎。提前谢谢!

【问题讨论】:

  • 我认为可能发生的事情是该库也在加载网站本身并且它没有被登录您可能需要做的是传递一个标志并在您的页面中检查标志而不是需要登录用户。
  • @Yeak ..感谢您的快速回复..您能更具体一点吗? laravel 5 上是否有可以推荐给我传递标志的功能?

标签: php laravel-5 pdf-generation wkhtmltopdf laravel-middleware


【解决方案1】:

在app/Http/Middleware目录下有一个Authenticate.php文件

在那里你可以指定不需要登录的路由

  public function handle($request, Closure $next, $guard = null)
    {

    if (Auth::guard($guard)->guest()) {


            //check for specific route to load without needing to log in
            $routeCheck = $request->route()->getActionName();
            if($routeCheck == 'App\Http\Controllers\SomeController@someMethodInController') {
                return $next($request);
            }

            return response('Unauthorized.', 401);

    }

    return $next($request);
}

然后在您的路线中,您可以指定路线

  Route::get('/campaign/{id}/{flag}', 'SomeController@someMethodInController');

它将检查该路由并允许访问,而无需用户登录。{flag} 是您可以传递并查找的标志

如果您不需要加载控制器并且只想加载视图,那么您可以在您的 routes.php 文件中添加以下内容

Route::get('/campaign/{id}/{flag}', function() {
    return view ('whateverview');
});

并且因为您没有通过这样做来访问控制器,所以不会发生登录检查

【讨论】:

    猜你喜欢
    • 2021-07-05
    • 2021-12-03
    • 2021-06-10
    • 2019-10-29
    • 2021-07-24
    • 2017-11-28
    • 2015-06-25
    • 1970-01-01
    • 2022-11-17
    相关资源
    最近更新 更多