labspace/auth-api

labspace 的 auth-api 包

1.3.2 2021-01-18 03:14 UTC

README

参考网站: https://pusher.com/tutorials/publish-laravel-packagist http://www.alvinchen.club/2018/05/04/%E6%A8%A1%E7%B5%84%E5%8C%96-%E5%A5%97%E4%BB%B6-%E9%96%8B%E7%99%BC%E8%87%AA%E5%B7%B1%E7%9A%84package/

母项目需要完成的事情

步骤.0

先安装并设置 jwt

https://jwt-auth.readthedocs.io/en/develop/

"tymon/jwt-auth": "dev-develop"

User 模型需要先与 jwt 连接、config 也需要设置,请参考:

https://jwt-auth.readthedocs.io/en/develop/quick-start/

============

步骤.1

安装套件

composer require labspace/auth-api

============

步骤.2

到 config/app.php 的 providers 中加上

Labspace\AuthApi\AuthApiServiceProvider::class,

============

步骤.3

到 app/Http/Kernal

将专属 jwt 登录验证的 middleware 添加到 routeMiddleware

'jwt' => \Labspace\AuthApi\Middleware\AuthJWT::class, //labsapce jwt

如果是 web 项目需要检查 route,请将 web_jwt 登录验证的 middleware 添加到 routeMiddleware

'web_jwt' => \Labspace\AuthApi\Middleware\WebAuthJWT::class, //web jwt

cors 记得设置,有三个地方需要添加

$middleware、$middlewareGroups、$routeMiddleware

protected $middleware = [ ... \App\Http\Middleware\CORS::class, //cross-domain ];

protected $middlewareGroups = [ 'web' => [ .... ],

'api' => [
    'throttle:60,1',
    'bindings',
    \PATH\TO\CORS::class, //cross-domain
],

];

protected $routeMiddleware = [ . . 'cors' => \PATH\TO\CORS::class, //labsapce cross-domain ];

步骤.4

php artisan vendor:publish --tag=config

如果没有 password_resets 表可以打指令产生 migration php artisan vendor:publish --tag=migration-password-reset

会新增专属 config 文件 labspace-auth-api.php,里面可以设置登录 user model 的位置、password_reset model 位置、是否邮箱审核、账号审核

ResetPassword Model 参考:

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class ResetPassword extends Model { protected $primaryKey = 'id'; protected $table = 'password_resets'; public $timestamps = false;

protected $fillable = [
    'username','token','created_at','status'
];

}

====================

使用说明

[登录 - POST] username:账号(必填) password:密码(必填) role:身份 (选填 admin member 若user model 没有区分也可以不加)

http://[server_url]/lab/api/auth/login?username=test&password=123456&role=member

{ "status": true, "data": { "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC8yMTAuNjUuMTMyLjc3XC9zc2xfcHJvamVjdFwvcHVibGljXC9sYWJcL2FwaVwvYXV0aFwvbG9naW4iLCJpYXQiOjE1NzcwNzM5MTcsImV4cCI6MTU3NzA3NzUxNywibmJmIjoxNTc3MDczOTE3LCJqdGkiOiJ5UmtYT3lRb05uVm5kNGVnIiwic3ViIjoxLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.i6sWvnU-20QYHxuPZrl4uGgSLbr-BnUXSughLQx6Ys8", "user_info": { "email": "test@gmail.com", "name": "王小明", "avatar": "", "id": 1, "role": "member" } }, "success_code": "SUCCESS" }

[获取基本信息 - GET]

token:用户token

http://[server_url]/lab/api/user/me?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC8yMTAuNjUuMTMyLjc3XC9zc2xfcHJvamVjdFwvcHVibGljXC9sYWJcL2FwaVwvYXV0aFwvbG9naW4iLCJpYXQiOjE1NzcwNzM3MDMsImV4cCI6MTU3NzA3NzMwMywibmJmIjoxNTc3MDczNzAzLCJqdGkiOiJJUkFsbkpPZ3hKd1MwTHhyIiwic3ViIjoxLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.LD44cHoxwDfzXYm0J3r4VTTfmhM-ByYQ-yL2i2jT-qU

{ "status": true, "data": { "user_info": { "email": "test@gmail.com", "name": "王小明", "avatar": "", "id": 1, "role": "member" } }, "success_code": "SUCCESS" }

[退出 - POST]

token:用户token

http://[server_url]/lab/api/auth/logout?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC8yMTAuNjUuMTMyLjc3XC9zc2xfcHJvamVjdFwvcHVibGljXC9sYWJcL2FwaVwvYXV0aFwvbG9naW4iLCJpYXQiOjE1NzcwNzM3MDMsImV4cCI6MTU3NzA3NzMwMywibmJmIjoxNTc3MDczNzAzLCJqdGkiOiJJUkFsbkpPZ3hKd1MwTHhyIiwic3ViIjoxLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.LD44cHoxwDfzXYm0J3r4VTTfmhM-ByYQ-yL2i2jT-qU

{ "status": true, "data": null }

[jwt middleware 用法]

route middleware

jwt => 不分身份,验证即可 jwt:member => 只能会员 jwt:admin => 只能管理员 jwt:member|admin => 管理员、会员都可以

[社群登录]

步骤.1

添加 migration

php artisan vendor:publish --tag=migration-social

使用说明

[登录 - POST] social_id:社群id provider:社群代号 fb google role:身份
email:邮箱

http://[server_url]/lab/api/auth/social-login?role=member&social_id=test&provider=fb&email=test@gmail.com { "status": true, "data": { "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC8yMTAuNjUuMTMyLjc3XC9zc2xfcHJvamVjdFwvcHVibGljXC9sYWJcL2FwaVwvYXV0aFwvbG9naW4iLCJpYXQiOjE1NzcwNzM5MTcsImV4cCI6MTU3NzA3NzUxNywibmJmIjoxNTc3MDczOTE3LCJqdGkiOiJ5UmtYT3lRb05uVm5kNGVnIiwic3ViIjoxLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.i6sWvnU-20QYHxuPZrl4uGgSLbr-BnUXSughLQx6Ys8", "user_info": { "email": "test@gmail.com", "name": "王小明", "avatar": "", "id": 1, "role": "member" } }, "success_code": "SUCCESS" }

如果账号不存在则返回要求注册

{ "status": true, "success_code": "PLEASE_REGISTER" }

===========

忘记密码

username: 帐号(邮箱)

http://[server_url]/lab/api/auth/forget-password?username=test@gmail.com

===========

发送验证邮件

注入ConfirmationService use Labspace\AuthApi\Services\ConfirmationService;

将User $user 传递到function

$this->confirmationService->sendMail($user);

============

如果忘记密码或发送验证邮件希望修改邮件内容,可以执行以下命令生成view,自行修改即可

php artisan vendor:publish --tag=view