Laravel框架使用Auth进行用户认证

环境

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.phpproviders 属性下的 modelApp\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进行用户认证

特别感谢

参考博客:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值