当前位置: 首页 > 知识库问答 >
问题:

Laravel重定向循环

樊胜
2023-03-14

我找不到我的谜题。当我加载页面时,chrome会说:localhost页面不工作,localhost重定向了你太多次。我猜这是在创造一个循环。我可能做错了一些我无法得到的事情。这是我的密码。

   //route
 Route::get('admin/login', 'Auth\AuthController@getlogin');
    Route::post('admin/login', 'Auth\AuthController@postLogin');
    Route::get('admin/logout', 'Auth\AuthController@getLogout');

    Route::group(['middleware' => 'auth'], function () {
        Route::Auth();
        Route::get('/admin', 'admin\HomeController@index');
    });


    Route::get('/', 'guest\HomeController@index');//access all

授权控制器

<?php

namespace App\Http\Controllers\Auth;

use App\Models\Admin;
use App\User;
use Validator;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\ThrottlesLogins;
use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers;
use Illuminate\Http\Request;
use Illuminate\Contracts\Auth\Guard;
use Illuminate\Contracts\Auth\Registrar;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Storage;
use Illuminate\Http\Response;

class AuthController extends Controller
{
    use AuthenticatesAndRegistersUsers, ThrottlesLogins;
    protected $redirectTo = '/admin';

    public function __construct() {

        $this->middleware($this->guestMiddleware(), ['except' => 'logout']);
    }

    protected function postLogin(Request $request){
        $email = $request['email'];
        $pass = $request['password'];//Hash::make(Input::get('password'));
        $user = Admin::where(['email' => $email])->first();
        if($user && $user->password == $pass) {
            Auth::login($user);
            dd(Auth::user()->toArray());
            return redirect()->intended('/admin');
        }
        else {
            $error = "Invalid username or password";
            return view("admin/login")->with("error", $error);
        }
    }
    protected function getLogout()  {
        Auth::logout();
        return redirect()->intended('admin/login');
    }
}

模型

<?php
namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Contracts\Auth\Authenticatable; 


class Admin extends Model implements Authenticatable
{

    use \Illuminate\Auth\Authenticatable;
    protected $table = 'admins';
    public $timestamps = false;
    public $remember_token = null;

}

Authenticate.php

<?php
namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\Auth;
class Authenticate
{

    public function handle($request, Closure $next, $guard = null)
    {
        if (Auth::guard($guard)->guest()) {
            if ($request->ajax() || $request->wantsJson()) {
                return response('Unauthorized.', 401);
            } else {
                return redirect()->guest('admin/login');
            }
        }
        return $next($request);
    }
}

config/auth.php

//---------------before-------------------
    'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\User::class,
        ],
//----------------after editing--------------------------
'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => App\Models\Admin::class,
    ],

共有1个答案

柴瀚
2023-03-14

您的身份验证路由不应应用身份验证中间件。因此:

Route::Auth();    

Route::group(['middleware' => 'auth'], function () {
    Route::get('/admin', 'admin\HomeController@index');
});
 类似资料:
  • 我有一个小难题,我正在尝试建立一个登录系统,它使用laravel auth脚手架将普通用户与管理员用户区分开来。 问题是它在中间件中处于无限重定向循环中。 在我按下登录按钮后,它会不断重定向到一条路线,问题是,我如何才能用“laravel方法”或任何其他方法解决这个问题。 这是我的控制器:1。基本家庭控制器: 主管理控制器-入口控制器: 登录控制器(默认的一个从auth scaffolding-由

  • 基于此,我在我的应用程序中添加了相同的中间件,结果是重定向循环。 如果用户未通过身份验证,应用程序将重定向到登录页面,因此对我来说,这就是问题所在。也许不是。 ssl证书已正确安装且有效(如果我手动转到https://myapp.org 它按预期工作)。 主要的问题是,我使用整个应用程序的助手url()生成网址,现在我需要重定向到安全的网址。 我尝试删除该中间件,并将重定向添加到.htaccess

  • 问题内容: 正在执行我的第一个Laravel 5项目,并且不确定在哪里或如何在我的应用程序上放置强制HTTPS的逻辑。关键在于,有许多域指向该应用程序,并且只有三分之二使用SSL(第三个是后备域,长话短说)。所以我想用我的应用程序的逻辑而不是.htaccess来处理这个问题。 在Laravel 4.2中,我使用以下代码完成了重定向: 我在想应该在中间件中实现类似这样的东西,但是我不能完全理解使用它

  • 安装新的Laravel 5.4项目。 运行。 去http://localhost:8000/home (未登录)。 我被重定向到http://localhost:8000/login 这个重定向看起来很神奇。这是回家的路线: 我们永远不会使用方法,因为中间件接管了这个任务。我打开中间件文件,并且没有提到重定向。 从到的重定向定义在哪里?

  • 我在拉拉维尔4号修建路线时遇到了麻烦 我的路线。php是: http://paste.laravel.com/v92 当我打主页没有在我的网址它的工作和Pagecontroller@showHomepage。当我试图在我的网址像en或nl的语言环境达到它也工作和加载Pagecontroller@showHomepage。 所以:/- 在管理组中,任何相同的事情都不起作用。如果我尝试在没有区域设置的

  • 我使用任何类型的路由,然后在这个方法中,我在请求类型的基础上生成树。 路线 从控制器在检查类型之前我这样检查它