laravel/ui 提供了认证相关的脚手架(Scaffold),使用 Artisan 命令快速实现相关功能:
1
| php artisan ui bootstrap --auth
|
可在 app/Http/Controllers/Auth 目录下查看相关控制器 、在 resources/views/auth 目录下查看相关视图, 同时在 routes/web.php 中添加了路由组 Auth::routes();,可通过命令 php artisan route:list 查看:
1 2 3 4 5 6 7 8 9 10
| GET|HEAD login ................................................ login › Auth\LoginController@showLoginForm POST login ................................................................ Auth\LoginController@login POST logout ..................................................... logout › Auth\LoginController@logout GET|HEAD password/confirm .............. password.confirm › Auth\ConfirmPasswordController@showConfirmForm POST password/confirm ......................................... Auth\ConfirmPasswordController@confirm POST password/email ................ password.email › Auth\ForgotPasswordController@sendResetLinkEmail GET|HEAD password/reset ............. password.request › Auth\ForgotPasswordController@showLinkRequestForm POST password/reset ............................. password.update › Auth\ResetPasswordController@reset GET|HEAD password/reset/{token} .............. password.reset › Auth\ResetPasswordController@showResetForm GET|HEAD register ................................ register › Auth\RegisterController@showRegistrationForm
|
查看 app/Http/Controllers/HomeController.php:
1 2 3 4 5 6 7 8 9 10 11 12 13
| class HomeController extends Controller { public function __construct() { $this->middleware('auth'); $this->middleware('auth', ['only'=>[]]); $this->middleware('auth', ['except' => []]); } }
|
还可以在路由中设置:
1 2 3 4 5
| <!--comment0-->
Route::middleware(['auth'])->group(function (){ });
|
访问 http://laravel-demo.test/home 查看。
获取认证的用户:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| <?php
namespace App\Http\Controllers;
use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth;
class HomeController extends Controller { public function authUser(Request $request){
$user = Auth::user(); $user = \auth()->user(); $user = $request->user();
$id = Auth::id(); $id = \auth()->id(); } }
|
在一些场景下,比如系统接入了统一身份认证或者微信等第三方登录,那就不需要我们处理登录相关逻辑,但是用户登入系统,我们仍然需要用 session 保存用户状态,那么可以这么做:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| <?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Auth;
class HomeController extends Controller { public function scanLogin($token){ $user = User::where('wechat_token', $token)->first();
Auth::login($user); \auth()->login($user); Auth::loginUsingId($user->id); \auth()->loginUsingId($user->id); } }
|
参考:https://github.com/laravel/ui