环境
laravel框架版本:7.3;
npm版本:8.5.5;
node版本:v16.15.0;
安装依赖包Laravel/ui
直接使用命令进行安装
composer require laravel/ui
如果安装报错,也可以直接在
composer.json
文件的require
属性下直接添加"laravel/ui": "^2.1"
代码,然后在控制台执行composer update
命令即可。
创建Auth脚手架
直接使用命令进行创建
#注意这里的vue为可选项,可以换成bootstrap react vue
php artisan ui vue --auth
然后在运行npm命令进行编译
npm install && npm run dev
看到上图这样就编译好了。
这样就创建好 auth
脚手架了,这样页面就可以访问了,但是登录注册还不能使用。
数据迁移
先配置数据库,这里我用的是本地环境,所以连接配置如下
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=root
然后执行迁移命令
php artisan migrate
页面使用查看效果
这时候打开首页,我们会发现,右上角多了注册登录按钮,点击之后能进入页面。
我们先试一下注册功能
我们会发现直接登录完的页面进入了,然后退出登录。
然后再试一下登录,使用刚才的邮箱和密码。
**至此用户认证就实现了。**有几个点再说一下。
模版文件在 resources
文件夹内,可以随意修改。
Auth相关自定义逻辑
自定义认证成功后的跳转路径
当用户认证成功,他们会被重定向到 /home
这个 url
下。 你可以使用 app\Providers\RouteServiceProvider
中定义的 HOME
常量来自定义身份验证后的重定向路径,自行修改即可。
自定义认证成功后的操作
如果你需要对用户身份验证后返回的响应进行更强大的自定义,Laravel
提供了一个空的 authenticated(Request $request, $user)
方法。
可以在 LoginController
里面重写 AuthenticatesUsers
里面的 authenticated()
方法即可。
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
class LoginController extends Controller
{
/**
* 用户认证通过后的操作
*
* @param \Illuminate\Http\Request $request
* @param mixed $user
* @return mixed
*/
protected function authenticated(Request $request, $user)
{
return response([
//
]);
}
}
特别注意
-
用户认证可以自定义模型(
App\Model\User
)实现,并不一定需要框架自带的App\user
模型,那么就更改config/auth.php
的providers
属性下的model
为App\Model\User
-
后端的登录和注册逻辑都能随意修改,比如修改对应字段,只需要在
LoginController
里面重写AuthenticatesUsers
里面的username()
方法,前端视图文件的提交参数也改成这个值即可。namespace App\Http\Controllers\Auth; use App\Http\Controllers\Controller; class LoginController extends Controller { /** * Get the login username to be used by the controller. * * @return string */ public function username() { return 'name'; } }
-
如果不使用
laravel
自带的登录逻辑,只想用用户认证
,可以在自己的登录控制器里去引用Illuminate\Foundation\Auth\AuthenticatesUsers
这个类,或者直接使用下面的代码直接加入用户认证
use \Illuminate\Support\Facades\Auth; //验证处于激活状态,并且存在的用户 Auth::attempt(['email' => $email, 'password' => $password, 'active' => 1]) // 记住用户 Auth::attempt(['email' => $email, 'password' => $password], $remember) //通过 ID 验证用户身份 Auth::loginUsingId(1); //登录并记住给定用户... Auth::loginUsingId(1, true);
Tip:更多用法请参考:Laravel7使用Auth进行用户认证
特别感谢
参考博客: