我想将用户(如果未经过身份验证)重定向到我的索引页面(这是登录页面)
似乎无法使其正常工作,我真的对路由感到困惑。
的HomeController
class HomeController extends Controller
{
/**
* Show the application dashboard.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
return redirect()->guest('/');
}
}
路由
// Index
Route::get('/', [
'as' => 'index',
'uses' => 'UserController@index'
]);
UserController中
您看到的路由重定向到用户控制器的索引功能,如下所示:
*有 __ construct()所以它使用了中间件' auth'。
public function __construct()
{
$this->middleware('auth');
}
public function index(){
// If user is logged
if(Auth::check()) {
// If user has NOT submitted information form redirect there, otherwise to categories
if(!Auth::user()->submitted_information)
return redirect()->route('information');
else
return redirect()->route('categories');
}
else
return view('index', ['body_class' => 'template-home']);
}
Handler.php
auth中间件中的未经身份验证的功能(Exceptions / Handler.php)
protected function unauthenticated($request, AuthenticationException $exception)
{
if ($request->expectsJson()) {
return response()->json(['error' => 'Unauthenticated.'], 401);
}
return redirect()->route('index');
}
我现在得到的错误如下:
InvalidArgumentException in UrlGenerator.php line 304:
Route [index] not defined.
由于
行而发生此错误 return redirect()->route('index');
在上面未经身份验证的函数中。
我在这里缺少什么?如果您需要更多信息,请随时提出。
编辑:到目前为止,如果我从 UserController 中移除__construct()
方法,并在web.php
中插入所有路由middleware
1}}使用,它的工作原理。
例如
Route::get('/categories', [
'as' => 'categories',
'uses' => 'UserController@showCategories'
])->middleware('auth');
但我试图在没有指定使用什么中间件的情况下自动使用它。
答案 0 :(得分:3)
按照以下代码构建您的路线:
data:image/bmp;....
路由:: get('/ mypage','HomeController @ mypage');
打开您的中间件类名为RedirectIfAuthenticated,然后处理fucntion 你在下面写下代码:
Route::group(['middleware' => ['auth']], function() {
// uses 'auth' middleware
Route::resource('blog','BlogController');
});
希望它对你有用。
答案 1 :(得分:1)
您的路线应该像
//索引
class Utility {
static void alertDialogShow(Context context, String title, String message) {
final AlertDialog alertDialog = new AlertDialog.Builder(context).create();
alertDialog.setTitle(title);
alertDialog.setMessage(message);
alertDialog.setButton(AlertDialog.BUTTON_POSITIVE, "OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
alertDialog.show();
}
答案 2 :(得分:1)
尝试
Route::get('/','UserController@index',['middleware'=>'auth'])->name('index);