我在RedirectIfAuthenticated.php
中遇到了这个特定的代码,但我不明白这实际上是有效的吗?
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->check()) {
return redirect('/home');
}
else {
return redirect()->action('AdminController@login')->with('flash_message_error','Please login to access ');
}
return $next($request);
}
现在我要问的重点是,如果我注释掉上面代码中的else部分,则可以访问使用php artisan make:auth
形成的默认页面(登录,注册等)。但是,一旦取消注释其他部分,便无法访问默认页面,但我直接点击了在项目中创建的AdminController的login
页面。为什么会这样?
作为参考,我还提供了控制器和路由代码。
AdminController
class AdminController extends Controller {
public function login(Request $request)
{
if ($request->isMethod('post')) {
$data = $request->input();
if (Auth::attempt(['email' => $data['email'], 'password' => $data['password'], 'admin' => '1'])) {
return redirect('/admin/dashboard');
} else {
return redirect('/admin')->with('flash_message_error','Invalid Username or Password');
}
}
return view('admin\admin_login');
}
public function dashboard()
{
return view('admin.dashboard');
}
Routes
Route::match(['get','post'],'/admin','AdminController@login');
Auth::routes();
Route::get('/home', 'HomeController@index')->name('home');
Auth::routes();
Route::get('/home', 'HomeController@index')->name('home');
Route::group(['middleware'=>['auth']],function(){
Route::get('admin/dashboard', 'AdminController@dashboard');
Route::get('settings','AdminController@settings');
});
Route::get('logout', 'AdminController@logout');
答案 0 :(得分:2)
使用伪代码:
if __name__ == '__main__': # to avoid new window with a new process
multiprocessing.freeze_support() # support multiprocessing in pyinstaller
from kivy.lang.builder import Builder
from kivy.clock import Clock
from kivy.uix.popup import Popup
from kivy.uix.textinput import TextInput
from kivy.uix.scatterlayout import ScatterLayout
from kivy.graphics.transformation import Matrix
from kivy.uix.scatter import Scatter
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.properties import BooleanProperty, ListProperty, BoundedNumericProperty, StringProperty, NumericProperty
from kivy.uix.boxlayout import BoxLayout
from kivy.app import App
from kivy.uix.behaviors import ButtonBehavior
from kivy.uix.image import Image
from kivy.core.window import Window
Laravel的中间件中不存在else部分,看来您已经添加了它。那不应该存在,因为这将导致该中间件总是将某人重定向到某个地方。
该中间件应该用于“仅来宾”路线。因此,如果您通过了身份验证,它将重定向到“ home”,否则,它将运行下一个中间件。
答案 1 :(得分:1)
RedirectIfAuthenticated.php是运行直到您看到请求结果的中间件。它只会检查您是否登录并重定向到相应的路由。