我想允许用户在外部应用中打开视频。 对于用户,我创建了一个临时(随机)令牌。 我意识到风险(用户可以共享链接/令牌),可能想要添加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
中间件吗?
谢谢!
答案 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