我如何使用中间件,以便用户在查看页面/文件之前必须填写密码?

时间:2019-06-24 07:07:35

标签: php laravel laravel-5

对于我要建立的网站,我需要使用密码保护PDF文件,为此,我想使用中间件,以便每个想要转到文件路径的人都将被重定向到一个他们必须填写的页面输入密码。当他们输入正确的密码后,他们将被重定向到文件,否则,他们将被重定向到他们的前一页。

我一直在网上寻找一种实现此目的的方法,甚至试图找到一种对PDF文件本身进行加密的方法,但是找不到与我要达到的目标遥不可及的任何东西。

我希望有人能帮助我解决这个问题,谢谢!!

编辑:在下面的图片中,您可以看到它的含义。

![Functional Design

2 个答案:

答案 0 :(得分:1)

在生成pdf链接之前,您需要弹出询问用户名或电子邮件和密码的信息。如果满足条件,则将页面重定向到pdf。

答案 1 :(得分:0)

首先,您将需要一个控制器来验证用户凭据:

您的控制器将类似于:

$credentials = $request->only('email', 'password');

if (Auth::attempt($credentials)) {
    return view('PdfPage', ['authenticated' => true]);
} else {
    return view('PdfPage', ['authenticated' => false]);
}

在查看页面中,您可以像下面那样检查返回的值:

@if($authenticated)
    <div>Show this div only if the user is authenticated</div>
@else
    <div>User is not authenticated</div>
@endif 

如果要重定向到其他视图(例如,上一页或错误页面),则上述方法将重定向到同一视图,在您的else语句中的控制器中简单使用要重定向用户的视图页面当他/她未通过身份验证时。

类似的东西:

$credentials = $request->only('email', 'password');

if (Auth::attempt($credentials)) {
    return view('PdfPage', ['authenticated' => true]);
} else {
    return view('ErrorPage', ['authenticated' => false]);
}