z-song / demo.laravel-admin.org

Source code of official http://demo.laravel-admin.org website.
507 stars 250 forks source link

后台登录时怎么把 username 字段改为 email 字段验证? #25

Open hanshileiai opened 6 years ago

hanshileiai commented 6 years ago

我在 admin_users 表里增加了 email 字段:要使用 email 字段登录。
官方文档里有个自定义用户名 Laravel 默认使用 email 字段来认证。如果你想用其他字段认证,可以在 LoginController 里面定义一个 username 方法:

public function username()
{
    return 'username';
}

但是 laravel-admin 登录中需要加在哪里?

我看 laravel-admin 框架里把 email 设置成了 username 在 vendor/encore/laravel-admin/src/Controllers/AuthController.php 文件的37行


    public function postLogin(Request $request)
    {
        $credentials = $request->only(['username', 'password']);

        $validator = Validator::make($credentials, [
            'username' => 'required', 'password' => 'required',
        ]);

        if ($validator->fails()) {
            return Redirect::back()->withInput()->withErrors($validator);
        }

        if (Auth::guard('admin')->attempt($credentials)) {
            admin_toastr(trans('admin.login_successful'));

            return redirect()->intended(config('admin.route.prefix'));
        }

        return Redirect::back()->withInput()->withErrors(['username' => $this->getFailedLoginMessage()]);
    }

我把 username 修改成了 email 但是登录验证依然失败。。。 请求帮助。。。

z-song commented 6 years ago

vendor/encore/laravel-admin/resources/views/login.blade.php里面的username改成了email了吗?

hanshileiai commented 6 years ago

vendor/encore/laravel-admin/resources/views/login.blade.php 里的 username 改成 email 了,参数正常接收,但是登录页面还是验证失败。。。 调试代码

        if (Auth::guard('admin')->attempt($credentials)) {
            admin_toastr(trans('admin.login_successful'));

            return redirect()->intended(config('admin.route.prefix'));
        }

Auth::guard('admin')->attempt($credentials) 这句不成立,

$credentials 里 dump 出来的是 email 和 password,