laravel 中的 AdminLTE 多重身份验证
AdminLTE multiple auth in laravel
我正在尝试在 Laravel(版本 6.x)中使用 AdminLTE 实现多重身份验证保护,但我无法通过 [=url 变量中的保护(作为 $url 变量) =39=]表格。
我的 API 在没有 AdminLTE 的情况下工作正常,并且在普通用户使用 AdminLTE 时也能正常工作。
我可以通过在地址栏中点击“/login/admin”和 "register/admin" 来显示 Admin login/register 表单,但是当我单击 login/register 按钮时,我会看到“404 Not Found”页面并在地址栏显示“/login/$url”
我已经更改了以下目录中的 login.blade.php
和 register.blade.php
:
vendor/.../view/login.blade.php and vendor/.../view/register.blade.php
LoginController.php:
public function adminLogin(Request $request)
{
$this->validate($request, [
'email' => 'required|email',
'password' => 'required|min:6'
]);
if (Auth::guard('admin')->attempt(['email' => $request->email, 'password' => $request->password], $request->get('remember'))) {
return redirect()->intended('/admin');
}
return back()->withInput($request->only('email', 'remember'));
}
RegisterController.php:
protected function createAdmin(Request $request)
{
$data = $request->all();
$this->validateAdmin($data)->validate();
$admin = Admin::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
]);
return redirect()->intended('login/admin');
}
routes/web.php:
Route::post('/login/admin', 'Auth\LoginController@adminLogin');
Route::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
register.blade.php:
@isset($url)
<form action="{{ url('register/$url') }}" method="post">
@else
<form action="{{ url(config('adminlte.register_url')) }}" method="post">
@endisset
您将 $url
硬编码为字符串,而不是将其用作变量
这是由于在 blade 视图文件的 url()
辅助函数参数
中使用了单引号
改成双引号就可以了
login.blade.php:
@isset($url)
<form action="{{ url("login/$url") }}" method="post">
@else
<form action="{{ url(config('adminlte.login_url')) }}" method="post">
@endisset
register.blade.php:
@isset($url)
<form action="{{ url("register/$url") }}" method="post">
@else
<form action="{{ url(config('adminlte.register_url')) }}" method="post">
@endisset
Changing files in vendor folder is redundant because your changes will be overridden on composer update/install
来自the docs
- 如果您发布并修改了默认母版、页面浏览量或登录浏览量,您也需要更新它们。
选项 1:
- 复制您修改的视图。
- 再次发布视图,使用
php artisan vendor:publish --provider="JeroenNoten\LaravelAdminLte\AdminLteServiceProvider" --tag=views
- 重做您所做的修改。
希望这对您有所帮助
我正在尝试在 Laravel(版本 6.x)中使用 AdminLTE 实现多重身份验证保护,但我无法通过 [=url 变量中的保护(作为 $url 变量) =39=]表格。 我的 API 在没有 AdminLTE 的情况下工作正常,并且在普通用户使用 AdminLTE 时也能正常工作。 我可以通过在地址栏中点击“/login/admin”和 "register/admin" 来显示 Admin login/register 表单,但是当我单击 login/register 按钮时,我会看到“404 Not Found”页面并在地址栏显示“/login/$url”
我已经更改了以下目录中的 login.blade.php
和 register.blade.php
:
vendor/.../view/login.blade.php and vendor/.../view/register.blade.php
LoginController.php:
public function adminLogin(Request $request)
{
$this->validate($request, [
'email' => 'required|email',
'password' => 'required|min:6'
]);
if (Auth::guard('admin')->attempt(['email' => $request->email, 'password' => $request->password], $request->get('remember'))) {
return redirect()->intended('/admin');
}
return back()->withInput($request->only('email', 'remember'));
}
RegisterController.php:
protected function createAdmin(Request $request)
{
$data = $request->all();
$this->validateAdmin($data)->validate();
$admin = Admin::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
]);
return redirect()->intended('login/admin');
}
routes/web.php:
Route::post('/login/admin', 'Auth\LoginController@adminLogin');
Route::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
register.blade.php:
@isset($url)
<form action="{{ url('register/$url') }}" method="post">
@else
<form action="{{ url(config('adminlte.register_url')) }}" method="post">
@endisset
您将 $url
硬编码为字符串,而不是将其用作变量
这是由于在 blade 视图文件的 url()
辅助函数参数
改成双引号就可以了
login.blade.php:
@isset($url)
<form action="{{ url("login/$url") }}" method="post">
@else
<form action="{{ url(config('adminlte.login_url')) }}" method="post">
@endisset
register.blade.php:
@isset($url)
<form action="{{ url("register/$url") }}" method="post">
@else
<form action="{{ url(config('adminlte.register_url')) }}" method="post">
@endisset
Changing files in vendor folder is redundant because your changes will be overridden on composer update/install
来自the docs
- 如果您发布并修改了默认母版、页面浏览量或登录浏览量,您也需要更新它们。
选项 1:
- 复制您修改的视图。
- 再次发布视图,使用
php artisan vendor:publish --provider="JeroenNoten\LaravelAdminLte\AdminLteServiceProvider" --tag=views
- 重做您所做的修改。
希望这对您有所帮助