Laravel通过密码限制网站

时间:2016-08-09 15:11:44

标签: php laravel authentication laravel-5 password-protection

我需要通过密码提供我的Laravel 5站点的身份验证(没有用户名,只有密码)。只有在用户输入正确的密码时才能访问网站。 它不能作为基本的服务器授权,因为我必须实现一些设计。

我知道可以在Laravel中使用多个身份验证来实现,但我不知道如何在我的应用程序中使用我的标准(用户和密码)身份验证。

有人可以帮忙怎么做吗?

3 个答案:

答案 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');
    }