如何在 Laravel 5.2 中使用不同的数据库表列名登录?

时间:2022-10-18
本文介绍了如何在 Laravel 5.2 中使用不同的数据库表列名登录?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

我必须在 Laravel 5.2 中实现登录功能.我已经使用官方 Laravel 文档成功地做到了这一点,只是我不知道如何使用不同的数据库表列名称来验证用户,即 st_usernamest_password.

我已经在互联网上搜索了线索,但无济于事.我不知道我需要使用哪个类(例如,使用 Illuminate ......)进行身份验证.如果有人知道答案,请告诉我.

这是我的代码:

登录查看

@extends('layouts.app')@section('内容')<div class="contact-bg2"><div class="容器"><div class="booking"><h3>登录</h3><div class="col-md-4 booking-form" style="margin: 0 33%;"><form method="post" action="{{ url('/login') }}">{!!csrf_field() !!}<h5>用户名</h5><input type="text" name="username" value="abcuser"><h5>密码</h5><input type="password" name="password" value="abcpass"><input type="submit" value="登录"><输入类型=重置"值=重置"></表单>

<div></div>@endsection

授权控制器

命名空间 AppHttpControllersAuth;使用 AppUser;使用验证器;使用 AppHttpControllersController;使用 IlluminateFoundationAuthThrottlesLogins;使用 IlluminateFoundationAuthAuthenticatesAndRegistersUsers;类 AuthController 扩展控制器{使用 AuthenticatesAndRegistersUsers、ThrottlesLogins;受保护的 $redirectTo = '/home';公共函数 __construct(){$this->middleware('guest', ['except' => 'logout']);$this->username = 'st_username';$this->password = 'st_password';}受保护的函数验证器(数组 $data){返回 Validator::make($data, ['名称' =>'需要|最大:255','电子邮件' =>'required|email|max:255|unique:users','密码' =>'需要|确认|分钟:6',]);}

路由文件

Route::get('/', function () {返回视图('索引');});Route::group(['middleware' => 'web'], function () {路线::认证();Route::get('/home', 'HomeController@index');});

config/auth.php

返回 ['默认' =>['守卫' =>'网络','密码' =>'用户',],'守卫' =>['网络' =>['司机' =>'会议','提供者' =>'用户',],'api' =>['司机' =>'令牌','提供者' =>'用户',],],'提供者' =>['用户' =>['司机' =>'雄辩','模型' =>应用用户::类,],//'用户' =>[//'司机' =>'数据库',//'表' =>'用户',//],],'密码' =>['用户' =>['提供者' =>'用户','电子邮件' =>'auth.emails.password','表' =>'密码重置','过期' =>60,],],];

解决方案

我搜索了很多如何自定义 Laravel 5.2 授权表单,这 100% 对我有用.这是从下到上的解决方案.

此解决方案最初来自此处:https://laracasts.com/discuss/channels/laravel/replacing-the-laravel-authentication-with-a-custom-authentication

但我必须进行一些更改才能使其正常工作.

我的网络应用程序是为 DJ 而设计的,所以我的自定义列名称带有dj_",例如名称是 dj_name

  1. config/auth.php

    //改变这个'司机' =>'雄辩',//到这个'司机' =>'风俗',

  2. 在 config/app.php 中将您的自定义提供程序添加到列表中...

    'providers' =>[...//将此添加到其他提供者的底部AppProvidersCustomAuthProvider::class,...],

  3. 在文件夹 appProviders 中创建 CustomAuthProvider.php

    命名空间 AppProviders;使用 IlluminateSupportFacadesAuth;使用 AppProvidersCustomUserProvider;使用 IlluminateSupportServiceProvider;类 CustomAuthProvider 扩展了 ServiceProvider {/*** 引导应用程序服务.** @return 无效*/公共函数引导(){Auth::provider('custom', function($app, array $config) {//返回 IlluminateContractsAuthUserProvider 的一个实例...return new CustomUserProvider($app['custom.connection']);});}/*** 注册应用服务.** @return 无效*/公共函数 register(){/