代码之家  ›  专栏  ›  技术社区  ›  zyx4sdk

Laravel通过密码限制网站

  •  -1
  • zyx4sdk  · 技术社区  · 8 年前

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

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

    有人能帮我怎么做吗?

    3 回复  |  直到 8 年前
        1
  •  3
  •   arma Mandip Darji    8 年前

    你可以这样做:

    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
  •  2
  •   Sanzeeb Aryal    8 年前

    建立了手动身份验证功能,只检查密码。

        public function authenticate(Request $request)
        {
            $password=$request->get('password');
            if (Auth::attempt(['password' => $password]) )
            {     
                return redirect()->intended('/home');   
            }
            else 
            {
                return redirect('/login');
            }
         }
    
        3
  •  1
  •   Anthony Budd    8 年前

    如果我没弄错你的问题,你只想在你的网站上进行密码验证,而不需要用户名。为了实现这一点,我将执行以下操作:

    • 使用电子邮件创建用户'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');
      }