laravel 5.2在使用内置的auth进行登录控制时默认是使用邮箱和密码登录的,如果需要通过用户名和密码去登录则需要进行调整。
调整步骤
- 找到当前使用的
AuthController, 笔者项目中的route信息如下:
$this->group(['namespace' => 'Admin','prefix' => '/admin',], function () {
Route::auth();
});
相应地,AuthController位于app\Http\Controllers\Admin\Auth\AuthController.php中。
-
Route::auth()定义的路由如下:
// 登录相关路由
$this->get('login', '[Auth\AuthController@showLoginForm]');
$this->post('login', '[Auth\AuthController@login]');
$this->get('logout', '[Auth\AuthController@logout]');
// 注册相关路由
$this->get('register', '[Auth\AuthController@showRegistrationForm]');
$this->post('register', '[Auth\AuthController@register]');
// 密码重置相关路由
$this->get('password/reset/{token?}', '[Auth\PasswordController@showResetForm]');
$this->post('password/email', '[Auth\PasswordController@sendResetLinkEmail]');
$this->post('password/reset', '[Auth\PasswordController@reset]');
因此可以通过修改app\Http\Controllers\Admin\Auth\AuthController.php中的login方法来达到目的,如果这个方法不存在就创建一个,笔者的代码如下:
/**
* post login.
*
* @param use App\Http\Requests\LoginRequest $request
* @return \Illuminate\Http\Response
*/
public function login(LoginRequest $request)
{
if (Auth::attempt(['name' => $request->get('name'), 'password' => $request->get('password')])) {
return redirect('/');
} else {
return redirect('/admin/login')->withErrors('用户名或密码错误!');
}
}
- 可以将表单数据验证放在
login方法中,这样的话代码中的LoginRequest就可以替换成Request了。笔者是通过Request来完成表单验证的,所以使用php artisan make:request LoginRequest创建了app\Http\Requests\LoginRequest.php,经过修改使其成为:
<?php
namespace App\Http\Requests;
use App\Http\Requests\Request;
class LoginRequest extends Request
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'name' => 'required',
'password' => 'required',
];
}
}
- 如果想让代码能够正常运行还需要在
app\Http\Controllers\Admin\Auth\AuthController.php加入一行:
use Illuminate\Support\Facades\Auth;
因为在login方法使用到了Auth。
- 读者可以在此基础上加入更加场景化的改进,比如登录成功后保存
session等。
本文首发于公众号:programmer_cc,转载请注明出处。
微信公众号.jpg











网友评论