首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不需要身份验证的PHP Laravel保护子页路由

不需要身份验证的PHP Laravel保护子页路由
EN

Stack Overflow用户
提问于 2019-05-16 07:56:08
回答 2查看 448关注 0票数 0

我正在构建一个Laravel-app,我有一个需要包含第三方脚本/iframe的路径。我希望在不设置laravel-authentication的情况下,使用简单的访问代码来保护该路由。

这有可能吗?如果是这样的话,我怎样才能做到呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-16 10:21:20

下面我给出的所有解决方案都表明您正在尝试使用code=X URI/GET参数访问您的路由。

简单路线

您只需检查给定的代码在每个路由的方法中是否正确,如果情况并非如此,则可以重定向到某个地方。

web.php

代码语言:javascript
复制
Route::get('yourRouteUri', 'YourController@yourAction');

YourController.php

代码语言:javascript
复制
use Request;

class YourController extends Controller {
    public function yourAction(Request $request) {
        if ($request->code != '1234') {
             return route('route-to-redirect-to')->redirect();
        }

        return view('your.view');
    }
}

使用中间件的路由

或者您也可以使用中间件来避免在每条路径中重复条件块,如果您对其中的许多条件进行了检查。

app/Http/Middleware/CheckAccessCode.php

代码语言:javascript
复制
namespace App\Http\Middleware;

use Request;
use Closure;

class CheckAccessCode
{
    public function handle(Request $request, Closure $next)
    {
        if ($request->code != '1234') {
            return route('route-to-redirect-to')->redirect();
        }

        return $next($request);
    }
}

app/Http/Kernel.php

代码语言:javascript
复制
// Within App\Http\Kernel Class...

protected $routeMiddleware = [
    // Other middlewares...    

    'withAccessCode' => \App\Http\Middleware\CheckAccessCode::class,
];

web.php

代码语言:javascript
复制
Route::get('yourRouteUri', 'YourController@yourAction')->middleware('withAccessCode');
票数 2
EN

Stack Overflow用户

发布于 2019-05-16 08:00:14

您可以创建自己的中间件

在您的$routesMiddleware文件的app/Http/Kernel.php中注册中间件。

然后像这样使用它:

代码语言:javascript
复制
Route::get('script/iframe', 'YourController@index')->middleware('your_middleware');

-编辑

您可以这样访问该路线:

代码语言:javascript
复制
yoururl.com/script/iframe?code=200

然后在中间件handle方法中:

代码语言:javascript
复制
if ($request->code !== 200) {
  // you don't have access redirect to somewhere else
}

// you have access, so serve the requested page.
return $next($request); 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56163594

复制
相关文章

相似问题

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