如何在laravel nova中使用用户名而不是电子邮件登录?

问题描述 投票:2回答:3

在我现有的laravel项目中,我使用用户名处理登录。

我已经用app \ Nova \ User.php上的用户名替换了电子邮件

请帮助我如何在laravel nova中使用用户名登录。提前致谢。

php laravel-nova
3个回答
1
投票

将此添加到您的

novaFolder\src\Http\Controllers

--

/**
 * Get the login username to be used by the controller.
 *
 * @return string
 */
public function username()
{
    return 'username';
}

这应该这样做,不要忘记在表中添加用户名列字段


1
投票

在研究了这个问题后,我解决了自己的问题。这就是我走的路。

应用程序\供应商\ NovaServiceProvider.php

    use Illuminate\Support\Facades\Route;

    //.....

    protected function routes()
    {
        $this->myLoginRoutes();
        Nova::routes()
                // ->withAuthenticationRoutes()
                ->withPasswordResetRoutes()
                ->register();        
    }

    /** ADD YOUR OWN LOGIN ROUTE */
    public function myLoginRoutes($middleware = ['web'])
    {
        Route::namespace('App\Nova\Http\Controllers\Auth')
            ->middleware($middleware)
            ->as('nova.')
            ->prefix(Nova::path())
            ->group(function () {
                Route::get('/login', 'LoginController@showLoginForm');
                Route::post('/login', 'LoginController@login')->name('login');
            });
    }   

复制 nova\src\resources\views\*app\resources\views\vendor\nova\* 你可以随意修改你想要的东西。

复制 nova\src\Http\Controllers\LoginController.phpapp\Nova\Http\Controllers\Auth\LoginController.php 并将命名空间修改为App \ Nova \ Http \ Controllers \ Auth;

应用程序\新星\ HTTP \ \控制器验证\ LoginController.php


    // ADD THIS METHOD TO OVERRIDE 
    public function username()
    {
        return 'username';
    } 

假设您已在用户迁移中将email更改为username


1
投票

对我来说,它有助于在NovaServiceProvider的启动功能中使用loadViewsFrom方法

$this->loadViewsFrom(__DIR__.'/../resources/views/vendor/nova', 'nova');

只需复制app / resources / views / vendor / nova / ...所需的模板

另见:https://laravel.com/docs/5.6/packages#views

除了用户模型的变化之外,这种变化应该可以完成大部分工作

/**
* Get the login username to be used by the controller.
*
* @return string
*/
public function username()
{
   return 'username';
}

问候,

安德烈亚斯

© www.soinside.com 2019 - 2024. All rights reserved.