我需要通过密码提供我的Laravel 5站点的身份验证(没有用户名,只有密码)。只有在用户输入正确的密码时才能访问网站。 它不能作为基本的服务器授权,因为我必须实现一些设计。
我知道可以在Laravel中使用多个身份验证来实现,但我不知道如何在我的应用程序中使用我的标准(用户和密码)身份验证。
有人可以帮忙怎么做吗?
答案 0 :(得分:2)
构建了手动验证功能,仅检查密码。
public function authenticate(Request $request)
{
$password=$request->get('password');
if (Auth::attempt(['password' => $password]) )
{
return redirect()->intended('/home');
}
else
{
return redirect('/login');
}
}
答案 1 :(得分:2)
你可以这样做:
Route::get('/', function () {
if (session('password_entered')) {
return view('homepage');
}
return view('enter_password_page');
});
Route::post('/', function () {
$password_to_website = 'RedMonkey';
$password = request('password_field');
if ($password && $password === $password_to_website) {
session(['password_entered' => true]);
return view('homepage');
}
return back()->withInput()->withErrors(['password' => 'Password is incorect']);
});
我没有尝试过,但这个想法就在那里。您可以从中制作中间件,或者直接在路由/控制器中使用它。
答案 2 :(得分:1)
如果我已正确理解您的问题,您希望在您的网站上只进行密码验证,而无需用户名。要做到这一点,我会做以下事情:
使用电子邮件“passwordlogin@yoursite.com”和您的电子邮件创建一个用户 所需密码
更新您的登录表单只需要密码
<form method="POST" action="/login">
{!! csrf_field() !!}
<input type="password" id="fieldPassword" name="password" required>
<label for="fieldPassword" class="label">Password</label>
更改您的POST'/ login'路由以在Auth \ AuthController类中触发名为'passwordLogin'的方法
<?php
Route::post('/login', 'Auth\AuthController@passwordLogin');
在Auth \ AuthController类中创建一个名为'passwordLogin'的方法,该方法使用Auth :: attempt()来验证密码。将电子邮件地址硬编码为您在步骤1中设置的电子邮件地址
public function passwordLogin(Request $request){
if($request->has('password')){
if(Auth::attempt(['email' => 'passwordlogin@yoursite.com', 'password' => $request->input('password')])) {
// User has the correct password
return redirect()->('/home');
}
}
// Login failed
return redirect()->intended('/login');
}