laravel-admin自定义登录 / 登陆
前提
如果需要使用自定义登录,需要能获取到登录用户的相关信息,然后使用相关信息进行登录。这样可以绕开laravel-admin默认的账号密码登录机制进行登录。
代码
直接上代码吧,代码中我们获取到了用户ID,然后通过用户ID获取到用户信息进行登录。
控制器代码
成功后直接跳转到laravel-admin后台首页,失败返回上一页。
<?php declare(strict_types=1); namespace App\Admin\Controllers; use Encore\Admin\Auth\Database\Administrator; use Illuminate\Http\Request; use Encore\Admin\Controllers\AuthController as BaseAuthController; class LoginController extends BaseAuthController { public function autoLogin (Request $request) { $user_id = $request->input("user_id"); $user = Administrator::where("id", $user_id)->first(); if ($user) { $this->guard()->login($user); return redirect()->intended("admin"); } return redirect()->back(); } }
路由代码
添加自定义登录路由
<?php use Illuminate\Routing\Router; Admin::routes(); Route::group([ 'prefix' => config('admin.route.prefix'), 'namespace' => config('admin.route.namespace'), 'middleware' => config('admin.route.middleware'), 'as' => config('admin.route.prefix') . '.', ], function (Router $router) { $router->get("auto-login", "LoginController@autoLogin"); });
配置文件修改
修改config/admin.php中以下代码,添加自定义登录路由权限豁免
// The URIs that should be excluded from authorization. 'excepts' => [ 'auto-login', 'auth/login', 'auth/logout', '_handle_action_', ],
这样只需要在访问自定义登录路由的时候将用户ID传过来就可以实现自动登录了:/admin/auto-login?user_id=?