9
Backend
@UserController.php
/*--------------------------------------
| For Frontend Authentication |
---------------------------------------*/
public function signup(Request $request)
{
$this->validate($request, [
'name' => 'required',
'email' => 'required|email|unique:users',
'password' => 'required'
]);
$user = new User([
'name' => $request->input('name'),
'email' => $request->input('email'),
'password' => bcrypt($request->input('password'))
]);
$user->save();
return response()->json([
'message' => 'Successfully created user!'
], 201);
}
}
/*---------------------------------------------
| For Authentication from Frontend
----------------------------------------------*/
Route::post('/user', [
'users' => 'UserController@signup'
]);
Frontend
http requestのheaderには、
Content-Type applicatiob/json →→ laravel側にjsonリクエストとして認識させる
X-Requested-With XMLHttpRequest →→ ajaxリクエストであることの表明
10
tokenの管理(セットアップ)
- jwt-authを使用
composer.jsonに
"require": { "tymon/jwt-auth": "0.5.*" }
を加筆
composer update →→ jwt-authをインストール
- Service Provider に jwt-auth を登録
@config/app.php
'providers' => [
/*
* Package Service Providers...
*/
Tymon\JWTAuth\Providers\JWTAuthServiceProvider::class,
]
を加筆
- aliases に jwt-auth の facade を追加
@config/app.php
'aliases' => [
'JWTAuth' => Tymon\JWTAuth\Facades\JWTAuth::class,
を加筆
- config の編集を発効
php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\JWTAuthServiceProvider"
jwt.php が生成される( jwt-auth の config ファイル)
- JWT Authentication Secret key の生成
php artisan jwt:generate
jwt.php に
'secret' => env('JWT_SECRET', 'hoge'),
が加筆される
token の管理(ロジック)
public function Signin(Request $request)
{
$this->validate($request, [
'name' => 'required',
'email' => 'required|email',
'password' => 'required'
]);
$credentials = $request->only('email', 'password');
try {
if(!$token = JWTAuth::attempt($credentials)) /* credentialのチェック */
{
return response()->json([
'error' => 'Invalid Credentials!'
], 401);
}
} catch(JWTException $e) {
return response()->json([
'error' => 'Could not create token!'
, 500]);
}
return response()->json([
'token' => $token /* tokenの発行 */
], 200);
}
11