Php 将视图限制为仅受邀用户Laravel中间件
我正在寻找一种方法,以显示一个特定的看法,只有特定的访客谁得到一个链接到该视图。如何制作一个中间件,使其仅在视图来自特定源时才显示视图(如来自source.blade.php) 我不能将中间件用于guest或auth,因为这样它会将该视图提供给所有auth,但我只想将该视图提供给一个在开始时已付款并已从特定URL重定向的auth 如何设置中间件,使其仅在验证从另一个视图(如-Php 将视图限制为仅受邀用户Laravel中间件,php,laravel,middleware,Php,Laravel,Middleware,我正在寻找一种方法,以显示一个特定的看法,只有特定的访客谁得到一个链接到该视图。如何制作一个中间件,使其仅在视图来自特定源时才显示视图(如来自source.blade.php) 我不能将中间件用于guest或auth,因为这样它会将该视图提供给所有auth,但我只想将该视图提供给一个在开始时已付款并已从特定URL重定向的auth 如何设置中间件,使其仅在验证从另一个视图(如-source.blade.php 目前,我有这个页面设置如下 public function __construct()
source.blade.php
目前,我有这个页面设置如下
public function __construct()
{
$this->middleware('auth:client');
}
这很好,它只向从客户端身份验证守卫登录的用户显示此页面,但问题是,任何客户端都可以访问此页面
我正在寻找一种方法,使之能够使它只能由谁支付了开始,并由我的网站重新指导的客户查看。也许像
public function __construct()
{
if(redirect_source="source.blade.php") {$this->middleware('auth:client'); }
}
您可以在将用户重定向到特定页面时传递令牌。然后使用中间件检查该令牌是否有效
例如,有人在开始时付款,您在会话中存储该人的用户id或任何唯一标识符的散列值,然后使用url中包含的相同散列值重定向用户。然后,如果会话中存储的值与url中提供的值相同,则中间件可以处理验证。我认为您需要一种基于用户类型限制权限的解决方案
$route->group(['middleware' => "aliasofyournewmiddle"],function(){
//some routes here
});
如果您想让请求者进入特定的url/路由,而不是控制视图内部,则可以使用中间件来调节某些参数
所以如果你想控制它,你可以使用这个解决方案
namespace App\Laravel\Middleware\Backoffice;
use Closure;
use Illuminate\Contracts\Auth\Guard;
use Illuminate\Http\RedirectResponse;
use Auth, Session;
class ValidSuperUser {
/**
* The Guard implementation.
*
* @var Guard
*/
protected $auth;
/**
* Create a new filter instance.
*
* @param Guard $auth
* @return void
*/
public function __construct(Guard $auth)
{
$this->auth = $auth;
}
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if($this->auth->user()->type != "super_user") {
Session::flash('notification-status','failed');
Session::flash('notification-title',"Access Denied");
Session::flash('notification-msg','You are not allowed to view the page you are tring to access.');
return redirect()->route('backoffice.dashboard');
}
return $next($request);
}
}
在Http文件夹下的Kernel.php中声明新的中间件以便使用
**将其置于受保护的$routeMiddleware=[]
然后用它来帮助你的路线,需要帮助这种类型的用户
$route->group(['middleware' => "aliasofyournewmiddle"],function(){
//some routes here
});
您的新中间件可以在请求时满足任何条件,因此传递到该url的任何输入和可用会话都可以在该中间件上使用,请根据您希望如何处理这种情况进行调整。您可以在链接中包含一个身份验证令牌,该令牌在特定时间后过期。JWT是这方面的理想选择。你的问题过于宽泛,缺乏任何有用的背景。你能尝试添加更多细节吗please@RiggsFolly我已经更新了这个问题,并添加了一些代码,以使它具体说明这是如何工作的?我如何使用它来限制用户,比如说
premium.blade.php
?您可以在应用程序上创建额外的中间件,并在内核中声明。然后,您可以使用它将示例路由到我的附加中间件“aliasofmiddleware”=>App\Laravel\middleware\Backoffice\ValidSuperUser;然后,当我在我的路由$route->group(['middleware'=>“aliasofmiddleware”]中使用它时,function(){//仅限超级用户的路由。});谢谢,效果很好。我唯一的问题是,当您在注销后单击“上一步”按钮时,它仍然显示视图,在该视图上注册是否有效?如果按下“后退”按钮,中间件会从该视图中删除任何功能吗?您需要在js脚本上安装cookie或会话检查器。导致浏览器actionbar上的任何操作只能在js脚本上控制:)