我正在开发Laravel应用程序,我们已经接近完成,客户端突然希望我们实现一些用户而没有用户名和密码,他们希望他们使用名字,姓氏和第4项社交活动,要使这项工作有效,我们还有一个唯一的ID,该ID将在链接中提供(在极少数情况下,当2个人具有相同的信息时)
我们可以将其拆分为多个用户表,但是由于用户之间的联系非常紧密,因此需要对几乎整个应用程序进行重大修改
我们已经有了可以使用的方法,问题是它破坏了仍将使用用户名和密码的其他用户(包括管理员)的登录。
我们尝试的第一件事是尝试不成功地说服客户不要采用这种方法,但是他们很难做到。显然,我们已尝试进行路由,以便使用其他登录控制器,但没有运气,它始终默认为loginController。
标准登录控制器
<?php
namespace App\Http\Controllers\Auth\Standard;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
class StandardLoginController extends Controller
{
/*
|--------------------------------------------------------------------------
| Login Controller
|--------------------------------------------------------------------------
|
| This controller handles authenticating users for the application and
| redirecting them to your home screen. The controller uses a trait
| to conveniently provide its functionality to your applications.
|
*/
use AuthenticatesUsers;
protected function authenticated(Request $request, $user)
{
if ($user->user_type == 'Patient'){
if ($user->current_facility_id != null){
return redirect()->route('patient.dashboard');
}
}
return redirect('/home');
}
/**
* Where to redirect users after login.
*
* @var string
*/
//protected $redirectTo = '/home';
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest')->except('logout');
}
}
用于新登录方法的备用登录控制器
<?php
namespace App\Http\Controllers\Auth;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
class LoginController extends Controller
{
/*
|--------------------------------------------------------------------------
| Login Controller
|--------------------------------------------------------------------------
|
| This controller handles authenticating users for the application and
| redirecting them to your home screen. The controller uses a trait
| to conveniently provide its functionality to your applications.
|
*/
use AuthenticatesUsers;
protected function authenticated(Request $request, $user)
{
if ($user->user_type == 'Patient'){
if ($user->current_facility_id != null){
return redirect()->route('patient.dashboard');
}
}
return redirect('/home');
}
protected function validateLogin(Request $request)
{
$request->validate([
'linkID' => 'required|string',
'firstname' => 'required',
'lastname' => 'required',
'password' => 'required|string',
]);
}/**/
public function username() {
return 'linkID';
}
protected function credentials(Request $request)
{
return $request->only($this->username(), 'password', 'firstname', 'lastname');
}
/**
* Where to redirect users after login.
*
* @var string
*/
//protected $redirectTo = '/home';
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest')->except('logout');
}
}
来自web.php的路由
Route::view('standard-login', 'auth.standard.login');
Route::post('standard-login', 'Auth\Standard\StandardLoginController@login');
另外一些来自用户模型的代码
public function getAuthPassword()
{
if($this->user_type == 'Patient')
{
return $this->last4ssn;
}
return $this->password;
}
理想情况下,我们将有两个登录门户 1.将使用社交的名字,姓氏和姓氏4,以及一个唯一的ID作为隐藏的url参数(如果没有参数,则可以输入) 2.我们将使用用户名和密码进行标准登录
答案 0 :(得分:0)
问题已解决,事实证明我没有更新登录表单上的操作,因此它引用了错误的登录控制器。