在laravel中管理多重身份验证

在laravel中管理多重身份验证,laravel,authentication,adminlte,Laravel,Authentication,Adminlte,我试图在Laravel(版本6.x)中使用AdminLTE实现多身份验证保护,但在登录/注册表单中传递保护(作为$url变量)时遇到了麻烦。 我的API在没有AdminLTE的情况下可以正常工作,在普通用户使用AdminLTE时也可以正常工作。 我可以通过在地址栏中点击“/login/Admin”和“register/Admin”来显示管理员登录/注册表单,但当我单击登录/注册按钮时,我会看到“404未找到”页面,在地址栏中显示“/login/$url” 我已更改了以下目录中的login.bla

我试图在Laravel(版本6.x)中使用AdminLTE实现多身份验证保护,但在登录/注册表单中传递保护(作为$url变量)时遇到了麻烦。 我的API在没有AdminLTE的情况下可以正常工作,在普通用户使用AdminLTE时也可以正常工作。 我可以通过在地址栏中点击“/login/Admin”和“register/Admin”来显示管理员登录/注册表单,但当我单击登录/注册按钮时,我会看到“404未找到”页面,在地址栏中显示“/login/$url”

我已更改了以下目录中的
login.blade.php
register.blade.php

vendor/.../view/login.blade.php and vendor/.../view/register.blade.php
LoginController.php:

@isset($url)
  <form action="{{ url('login/$url') }}" method="post">
@else 
  <form action="{{ url(config('adminlte.login_url')) }}" method="post">
@endisset
@isset($url)
  <form action="{{ url('register/$url') }}" method="post">
@else 
  <form action="{{ url(config('adminlte.register_url')) }}" method="post">
@endisset
@isset($url)
  <form action="{{ url("login/$url") }}" method="post">
@else
  <form action="{{ url(config('adminlte.login_url')) }}" method="post">
@endisset
@isset($url)
  <form action="{{ url("register/$url") }}" method="post">
@else 
  <form action="{{ url(config('adminlte.register_url')) }}" method="post">
@endisset
公共函数adminLogin(请求$Request) { $this->validate$请求[ “电子邮件”=>“必需”|电子邮件”, “密码”=>“必需|最小值:6” ]); 如果(Auth::guard('admin')->尝试(['email'=>$request->email,'password'=>$request->password],$request->get('memory')){ return redirect()->预期('/admin'); } return back()->withInput($request->only('email','memory'); }
RegisterController.php:

@isset($url)
  <form action="{{ url('login/$url') }}" method="post">
@else 
  <form action="{{ url(config('adminlte.login_url')) }}" method="post">
@endisset
@isset($url)
  <form action="{{ url('register/$url') }}" method="post">
@else 
  <form action="{{ url(config('adminlte.register_url')) }}" method="post">
@endisset
@isset($url)
  <form action="{{ url("login/$url") }}" method="post">
@else
  <form action="{{ url(config('adminlte.login_url')) }}" method="post">
@endisset
@isset($url)
  <form action="{{ url("register/$url") }}" method="post">
@else 
  <form action="{{ url(config('adminlte.register_url')) }}" method="post">
@endisset
受保护的函数createAdmin(请求$Request)
{
$data=$request->all();
$this->validateAdmin($data)->validate();
$admin=admin::创建([
'name'=>$data['name'],
'email'=>$data['email'],
'password'=>Hash::make($data['password']),
]);
return redirect()->预期('login/admin');
}
routes/web.php:

@isset($url)
  <form action="{{ url('login/$url') }}" method="post">
@else 
  <form action="{{ url(config('adminlte.login_url')) }}" method="post">
@endisset
@isset($url)
  <form action="{{ url('register/$url') }}" method="post">
@else 
  <form action="{{ url(config('adminlte.register_url')) }}" method="post">
@endisset
@isset($url)
  <form action="{{ url("login/$url") }}" method="post">
@else
  <form action="{{ url(config('adminlte.login_url')) }}" method="post">
@endisset
@isset($url)
  <form action="{{ url("register/$url") }}" method="post">
@else 
  <form action="{{ url(config('adminlte.register_url')) }}" method="post">
@endisset
Route::post('/login/admin',Auth\LoginController@adminLogin');
路由::post('/register/admin',Auth\RegisterController@createAdmin');
login.blade.php:

@isset($url)
  <form action="{{ url('login/$url') }}" method="post">
@else 
  <form action="{{ url(config('adminlte.login_url')) }}" method="post">
@endisset
@isset($url)
  <form action="{{ url('register/$url') }}" method="post">
@else 
  <form action="{{ url(config('adminlte.register_url')) }}" method="post">
@endisset
@isset($url)
  <form action="{{ url("login/$url") }}" method="post">
@else
  <form action="{{ url(config('adminlte.login_url')) }}" method="post">
@endisset
@isset($url)
  <form action="{{ url("register/$url") }}" method="post">
@else 
  <form action="{{ url(config('adminlte.register_url')) }}" method="post">
@endisset

您将
$url
硬编码为字符串,而不是将其用作变量

这是因为在
url()
helper函数参数的刀片视图文件中使用了单引号

把它改成双引号

login.blade.php:

@isset($url)
  <form action="{{ url('login/$url') }}" method="post">
@else 
  <form action="{{ url(config('adminlte.login_url')) }}" method="post">
@endisset
@isset($url)
  <form action="{{ url('register/$url') }}" method="post">
@else 
  <form action="{{ url(config('adminlte.register_url')) }}" method="post">
@endisset
@isset($url)
  <form action="{{ url("login/$url") }}" method="post">
@else
  <form action="{{ url(config('adminlte.login_url')) }}" method="post">
@endisset
@isset($url)
  <form action="{{ url("register/$url") }}" method="post">
@else 
  <form action="{{ url(config('adminlte.register_url')) }}" method="post">
@endisset
更改供应商文件夹中的文件是多余的,因为您的更改将在composer更新/安装时被覆盖

  • 如果您已经发布并修改了默认的母版、页面视图或登录视图,您也需要更新它们
  • 备选案文1:

    • 制作所修改视图的副本
    • 使用重新发布视图
    • 重做您所做的修改

    希望这有帮助

    除了在供应商中进行更改外,您知道在何处进行这些更改吗?因为在视图文件中只有一行(@extends('adminlte::login')或@extends('adminlte::register')。如果这些视图是由软件包提供的,您可以使用artisan将它们发布到资源视图目录中。再次感谢您的帮助。这节省了我很多时间。