下面三种方法基本原理都是相同的。
1. 方法一
使用 Laravel 自带认证系统,修改 /app/Http/Controllers/Auth/AuthController.php 文件,重写方法(原方法所在文件 /vendor/laravel/framework/src/Illuminate/Foundation/Auth/AuthenticatesUsers.php):
代码如下 | 复制代码 |
namespace App\Http\Controllers\Auth; ...... use Illuminate\Http\Request; // 增加该行 class AuthController extends Controller { protected $username = 'login'; .... protected function getCredentials(Request $request) { $login = $request->get('login'); $field = filter_var($login, FILTER_VALIDATE_EMAIL) ? 'email' : 'name'; return [ $field => $login, 'password' => $request->get('password'), ]; } } |
2. 方法二
修改 /app/Http/Controllers/Auth/AuthController.php 文件,这也是使用 Laravel 自带认证系统的一种方法。
代码如下 | 复制代码 |
namespace App\Http\Controllers\Auth; ...... use Illuminate\Http\Request; // 增加该行 class AuthController extends Controller { // 修改这里 use AuthenticatesAndRegistersUsers, ThrottlesLogins { AuthenticatesAndRegistersUsers::postLogin as laravelPostLogin; } ...... // 增加方法 public function postLogin(Request $request) { $field = filter_var($request->input('login'), FILTER_VALIDATE_EMAIL) ? 'email' : 'name'; $request->merge([$field => $request->input('login')]); $this->username = $field; return self::laravelPostLogin($request); } } |
3. 方法三
重写登录功能
LoginRequest.php:
代码如下 | 复制代码 |
public function rules() { return [ 'login' => 'required', 'password' => 'required' ]; } AuthController.php: public function login(LoginRequest $request) |
时间: 2024-10-30 13:32:32