修改现有授权模块(电子邮件到用户名)

时间:2015-02-18 13:13:33

标签: laravel laravel-5

我想修改Laravel 5提供的现有授权模块,而不是要求email它将要求数据库中的username字段。

5 个答案:

答案 0 :(得分:35)

Laravel在文件中搜索变量$ username:

  

照亮\基金会\验证\ AuthenticatesUsers

public function loginUsername() {
    return property_exists($this, 'username') ? $this->username : 'email';
}

如您所见,默认情况下,它将被命名为' email'。

但是,您可以通过添加:

在AuthController中覆盖它
protected $username = 'username';

答案 1 :(得分:5)

您无需修改​​Auth模块来执行此操作,只需在尝试中传递用户的标识符即可。在try尝试数组中使用字段名称:

if (Auth::attempt(['username' => $username, 'password' => $password]))
    {
        return redirect()->intended('dashboard');
    }

答案 2 :(得分:5)

您可以尝试检查文件Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers,以获得想法。

然后在postLogin上添加AuthController覆盖:

public function postLogin(Request $request)
{
    $this->validate($request, [
        'username' => 'required',
        'password' => 'required',
    ]);

    $credentials = $request->only('username', 'password');

    if ($this->auth->attempt($credentials, $request->has('remember')))
    {
        return redirect()->intended($this->redirectPath());
    }

    return redirect($this->loginPath())
                ->withInput($request->only('username', 'remember'))
                ->withErrors([
                    'username' => 'These credentials do not match our records.',
                ]);
}

您还需要将use Illuminate\Http\Request;添加到AuthController

答案 3 :(得分:3)

你可以从laravel 5.3中的LoginController.php覆盖auth用户名函数

USE [lms_db]
GO

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TRIGGER [dbo].[updateLM_TIME]
ON [dbo].[INSTITUTIONS]

AFTER INSERT, UPDATE 
AS

IF NOT UPDATE(CLIENT_SYNCED_TIME)

BEGIN

UPDATE dbo.INSTITUTIONS
SET lm_time = CONVERT(DATETIME, CONVERT(VARCHAR(20), GETDATE(), 120))
WHERE ID IN (SELECT DISTINCT ID FROM Inserted)

END

答案 4 :(得分:0)

在controllers \ auth \ logincontroller中添加此

 protected $username = 'user_name';//user_name field name

然后转到Illuminate \ Foundation \ Auth \ AuthenticatesUsers并更改

 public function username()
    {
         return 'email';//change this with "return $this->username;"
    }

使用此方法您可以在不同的控制器中使用不同的登录类型,例如在另一个控制器controller \ admin_auth \ logincontroller

protected $username = 'phone_number';
相关问题