新的password.confirm功能已添加到laravel 6.2框架中。 我有一个新的laravel 6.18.8安装,我已经完成了基于警卫的多重身份验证。 我想为此自定义防护程序运行password.confirm。 在将登录正确重定向到admin / home url后,guard:admin的登录/注销正常工作。验证我是否登录到guard:admin到目前为止是否正常工作: -如果我已经登录了Guard:admin,则尝试输入admin / login会将我重定向到admin / home-正确 -如果我没有登录,尝试输入admin / home会将我重定向到admin / login-
但是
试图进入admin / secret(应该要求管理员密码)将我重定向到用户登录页面,因为要打开密码/确认url(用于默认保护)
以管理员身份登录并手动尝试打开url admin / password / confirm时显示错误
Target class [admin] does not exist.
是否有机会运行此程序?还是“按原样”制作,并且不会使用默认的默认身份验证防护?
目前,我的卫兵代码:admin: config / auth.php
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
'hash' => false,
],
'admin' => [
'driver' => 'session',
'provider' => 'admins',
],
],
routes / web.php
/*
|--------------------------------------------------------------------------
| Web Routes for admin panel
|--------------------------------------------------------------------------
|
|
*/
Route::prefix( env('ADMIN_PREFIX', 'admin') )->name('admin.')->namespace('Admin')->group(function () {
// Auth::routes(['register' => false, 'verify' => false]);
// Login/out process
Route::get('/login', 'Auth\LoginController@showLoginForm')->name('login');
Route::post('/login', 'Auth\LoginController@login')->name('login');
Route::post('/logout', 'Auth\LoginController@logout')->name('logout');
// Password reset process
Route::get('/password/reset', 'Auth\ForgotPasswordController@showLinkRequestForm')->name('password.request');
Route::get('/password/reset/{token}', 'Auth\ResetPasswordController@showResetForm')->name('password.reset');
Route::post('/password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail')->name('password.email');
Route::post('/password/reset', 'Auth\ResetPasswordController@reset')->name('password.update');
// Password confirmation process
Route::get('/password/confirm', 'Auth\ConfirmPasswordController@showConfirmForm')->name('password.confirm');
Route::post('/password/confirm', 'Auth\ConfirmPasswordController@confirm')->name('password.confirm');
Route::middleware('auth:admin')->group(function() {
Route::view('/home', 'admin.home')->name('home');
Route::view('/secret', 'admin.secret')->name('secret')->middleware('password.confirm');
});
答案 0 :(得分:1)
好的,我知道您可以指定转发位置,例如
middleware('password.confirm:admin.password.confirm')
然后我发现一个问题...愚蠢的我; P在Admin / Auth / ConfirmPasswordController.php文件的构造函数中,我键入了中间件('admin:auth')而不是'auth:admin'
答案 1 :(得分:0)
Web的路由在routes / web.php中,而Admin的路由在routes / Admin.php中
如果我在任何web.php import React, { useState } from 'react';
import {
View,
Text,
TextInput
} from 'react-native';
function Hooking() {
const [value, setValue] = useState('..')
const [name, setName] = useState('')
console.log("sasasa")
return (
<View>
<TextInput style={{borderColor:'gray', borderWidth:1}}
value={value} onChange={e => setValue(e.target.value)}
/>
<Text>mi llamo: {value}</Text>
<Text>name: {value}</Text>
</View>
)
}
export default Hooking;
中添加(->middleware(password.confirm))
,就可以完成;如果我在Admin.php Routes =>
中添加(->middleware(password.confirm))
,则可以完成完成,但是
如果我仅添加了一个admin.php路由,并且在web.php路由中都正常运行,则中间件会自动重定向回