Laravel - 使用带有令牌的中间件来获取临时文件

时间:2018-02-14 16:24:28

标签: php laravel middleware

我想允许用户在外部应用中打开视频。 对于用户,我创建了一个临时(随机)令牌。 我意识到风险(用户可以共享链接/令牌),可能想要添加IP /设备限制器。由于这不是什么严重/家庭项目,我只是想了解处理中间件时的最佳实践。 :)

class VideoController extends Controller
{
    /**
     * @param AssetRequest $request
     *
     * @return mixed
     * @throws FileNotFoundException
     */
    public function show(AssetRequest $request)
    {
        // Get token, valid against user_id, asset
    }
}

是否可以使用中间件?

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;

class AuthenticateWithToken
{
    /**
     * Handle an incoming request.
     *
     * @param  Request $request
     * @param  Closure $next
     *
     * @return mixed
     */
    public function handle(Request $request, Closure $next)
    {
        // Valid token here

        return $next($request);
    }
}

或者这不是中间件的任务吗? 我应该使用guest中间件吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

我认为documentation就是这个地方。

例如,你会做类似的事情:

<?php

namespace App\Http\Middleware;

use Closure;

class CheckToken
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if (!isTokenExpired($token)) { // logic to check if token has access
            return redirect('myTempAppRouterNameHere');
        }

        return $next($request);
    }
}

然后,请务必查看注册部分并实施适用于您的任何内容。我认为使用中间件是实现您想要做的事情的更简单方法。

以下是一些很好的资源:

Laravel 5.5:http://itsolutionstuff.com/post/laravel-55-create-custom-middleware-exampleexample.html

https://medium.com/@Sharad35386442/laravel-5-5-middleware-complete-tutorial-44d8f4d61c4b

Laravel 5.1:https://tutorialedge.net/php/laravel/laravel-5-middleware-tutorial/

https://laracasts.com/discuss/channels/laravel/custom-requests-in-middleware