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

Laravel身份验证登录表单已登录时重定向

扈阳辉
2023-03-14

我使用Laravel 5.2。我想问一个问题。如何更改重定向登录表单在laravel当我们已经做登录?我使用的是来自Php artisan make: auth的auth。

  • 我已经登录并重定向到localhost:8000/admin
  • 然后我再次打开localhost:8000/登录。它将重定向到“/”或localhost:8000/
  • 我的问题是如何将“/”更改为“/”管理员“?因此,即使我已经登录,当我想打开localhost:8000/login时,我也不希望它重定向到“/”而是重定向到“/admin”或localhost:8000/admin

我认为它在AuthController上,因此这是我的AuthController:

<?php

namespace App\Http\Controllers\Auth;

use App\User;
use Validator;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\ThrottlesLogins;
use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers;

class AuthController extends Controller
{
    /*
    |--------------------------------------------------------------------------
    | Registration & Login Controller
    |--------------------------------------------------------------------------
    |
    | This controller handles the registration of new users, as well as the
    | authentication of existing users. By default, this controller uses
    | a simple trait to add these behaviors. Why don't you explore it?
    |
    */

    use AuthenticatesAndRegistersUsers, ThrottlesLogins;

    /**
     * Where to redirect users after login / registration.
     *
     * @var string
     */
    // protected $redirectPath = '/admin';
    protected $redirectTo = '/admin';
    protected $redirectAfterLogout = '/login';
    /**
     * Create a new authentication controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware($this->guestMiddleware(), ['except' => 'logout']);
    }

    /**
     * Get a validator for an incoming registration request.
     *
     * @param  array  $data
     * @return \Illuminate\Contracts\Validation\Validator
     */
    protected function validator(array $data)
    {
        return Validator::make($data, [
            'name' => 'required|max:255',
            'email' => 'required|email|max:255|unique:users',
            'password' => 'required|min:6|confirmed',
        ]);
    }

    /**
     * Create a new user instance after a valid registration.
     *
     * @param  array  $data
     * @return User
     */
    protected function create(array $data)
    {
        return User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => bcrypt($data['password']),
        ]);
    }
}

当我搜索什么是Route::auth()时,我发现了这个:

$this->get('login', 'Auth\AuthController@showLoginForm');
$this->post('login', 'Auth\AuthController@login');
$this->get('logout', 'Auth\AuthController@logout');

// Registration Routes...
$this->get('register', 'Auth\AuthController@showRegistrationForm');
$this->post('register', 'Auth\AuthController@register');

// Password Reset Routes...
$this->get('password/reset/{token?}', 'Auth\PasswordController@showResetForm');
$this->post('password/email', 'Auth\PasswordController@sendResetLinkEmail');
$this->post('password/reset', 'Auth\PasswordController@reset');

所以我认为问题出在“Auth”上\AuthController@showLoginForm“。然后在AuthController上找不到

public function showLoginForm {}

所以,如果我想用这个函数做些什么,我必须做什么??如果我已经登录,则重定向到/admin,否则请登录(或重定向到/login)

这是我的路线:

Route::get('/', function () {
    return view('welcome');
});

//admin
Route::get('admin', function() {
    return view('admin.index');
});

//login
Route::auth();
Route::get('/home', 'HomeController@index');

谢谢你的回复。

共有1个答案

盖博简
2023-03-14

您可以编辑App\Http\Middleware\RedirectIfAuthenticated中间件,如下所示:

public function handle($request, Closure $next, $guard = null)
{
     if (Auth::guard($guard)->check()) {
         return redirect('/admin');
     }

     return $next($request);
}

或者你可能有一个专门的中间件。

在您的控制台中,php artisan make:middleware RedirectIfAdmin并像上面那样编辑handle方法,然后在App\Http\Kernel中注册该中间件,如下所示:

protected $routeMiddleware = [
   ...
   'RedirectIfAdmin' => \App\Http\Middleware\RedirectIfAdmin::class,
];

并将该中间件连接到控制器构造函数:

public function __construct()
{
    $this->middleware('RedirectIfAdmin', ['except' => 'logout']);
}
 类似资料:
  • 使用,https://github.com/firebase/FirebaseUI-Android/tree/master/codelabs/chat作为登录的参考,我在键入时似乎遇到了问题 我只能键入Auth的提供者,而不能键入,为什么会这样,它提示我键入社会提供者。

  • 我正在开发一个Laravel身份验证系统,当注册生效时,用户会登录,并在数据库中创建条目,但登录不起任何作用。我已经包括了谷歌硬盘上压缩的Laravel项目文件夹,因此如果您设置自己的数据库,您可以直接查看服务器配置不足的任何潜在原因。注意,这个问题在我添加jquerymobile之前就存在了,所以它不是AJAX负载。 https://drive.google.com/file/d/0BzXcUh

  • 我正在进行多重身份验证。我的前端有一个带有卡号和密码的登录表单。在auth.php中 在route.php中 在logincontroller中, 在loginModel.php中 当我尝试登录时,我收到此错误 EloquentUserProvider.php第110行中的错误异常:传递给Illumate\Auth\EloquentUserProvider的参数1::validateCreenti

  • 在控制台中写入函数:anonymousUser true[ROLE_ANONYMOUS] 并且应该是user1 true[ROLE_USER]user1

  • 试图阻止来宾用户的路由。当有人点击时,它将检查用户是否以管理员身份登录。如果admin然后它工作正常,如果代理然后它重定向到登录页面,但如果我作为访客用户点击链接,它不会将我重定向到登录页面,而是显示一些错误: 路由中的错误异常。php第53行:尝试获取非对象的属性。 这是我的路线。php文件:

  • 我正在Firebase后端的帮助下开发应用程序,并且我正在使用Firebase Auth登录我的应用程序。我已经完成了所有集成和所有事情,我的应用程序运行良好。 但我只希望与单个用户的单个会话,因为现在用单个用户Id,我可以通过多个设备登录。 因此,我想限制用户一次只能在一台设备上登录。 我正在使用自定义身份验证和用户名密码登录: 如果用户在另一台设备中使用相同的ID登录,我想显示“您已经登录到另