【问题标题】:Laravel 5.3: How to authenticate only active usersLaravel 5.3:如何仅对活动用户进行身份验证
【发布时间】:2017-04-19 12:30:03
【问题描述】:

我想 laravel 5.3 登录用户表 status='Active' 但是 status='Inactive' 无法登录。

请帮帮我。非常感谢你们!

【问题讨论】:

标签: laravel-5


【解决方案1】:

转到 \vendor\laravel\framework\src\Illuminate\Foundation\Auth\AuthenticatesUsers.php 然后更改凭据功能。 并查看此链接https://laracasts.com/discuss/channels/laravel/allowing-only-active-users-to-login

示例函数链接

受保护的功能凭据(请求 $request) { $crendentials = $request->only($this->username(), 'password'); $credentials['status']='活动'; 返回$凭证; }

【讨论】:

    【解决方案2】:

    在 Auth/LoginController.php 中添加这个函数

    use Illuminate\Http\Request;
    
    protected function credentials(Request $request)
    {
        return [
            $this->username() => $request->get($this->username()),
            'password' => $request->get('password'),
            'active' => 1
        ];
    }
    

    通过这样做,您实际上覆盖了它。此函数在 AuthenticatesUsers 特征中。

    获得相同结果的另一种方法是通过添加覆盖 validateLogin() 函数

    use Illuminate\Http\Request;
    use Illuminate\Validation\Rule;
    
    protected function validateLogin(Request $request)
    {
        $this->validate($request, [
            $this->username() =>  [
                'required',
                Rule::exists('users')->where(function ($query) {
                    $query->where('active', 1);
                }),
            ], 
            'password' => 'required',
        ]);
    }
    

    到 LoginController.php

    【讨论】:

      【解决方案3】:

      你可以这样试试:

      if (Auth::attempt(['email' => $email, 'password' => $password, 'status' => 'Active'])) {
          // The user is active, not suspended, and exists.
      }
      

      【讨论】:

        猜你喜欢
        • 2021-02-26
        • 2017-07-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-25
        • 1970-01-01
        • 2017-05-25
        相关资源
        最近更新 更多