laravel 5.2 auth 登录机制修改

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,经过修改使其成为:
 'required',
            'password' => 'required',
        ];
    }
}
  • 如果想让代码能够正常运行还需要在app\Http\Controllers\Admin\Auth\AuthController.php加入一行:
use Illuminate\Support\Facades\Auth;

因为在login方法使用到了Auth

  • 读者可以在此基础上加入更加场景化的改进,比如登录成功后保存session等。

本文首发于公众号:programmer_cc,转载请注明出处。


laravel 5.2 auth 登录机制修改_第1张图片
微信公众号.jpg

你可能感兴趣的:(laravel 5.2 auth 登录机制修改)