labspace / auth-api
labspace 的 auth-api 包
Requires
- php: ^7.0
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