-
php教程之使用Laravel集成JWT认证开发RestfulApi(5)
运行以下命令创建一个新的 ApiController :
1
|
php artisan make:controller ApiController |
这将会在 app/Http/Controllers 目录下创建 ApiController.php 文件。将下面的代码黏贴至该文件中。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
<?php namespace App\Http\Controllers; use App\Http\Requests\RegisterAuthRequest; use App\User; use Illuminate\Http\Request; use JWTAuth; use Tymon\JWTAuth\Exceptions\JWTException; class ApiController extends Controller { public $loginAfterSignUp = true ; public function register(RegisterAuthRequest $request) { $user = new User(); $user->name = $request->name; $user->email = $request->email; $user->password = bcrypt($request->password); $user->save(); if ($ this ->loginAfterSignUp) { return $ this ->login($request); } return response()->json([ 'success' => true , 'data' => $user ], 200); } public function login(Request $request) { $input = $request->only( 'email' , 'password' ); $jwt_token = null ; if (!$jwt_token = JWTAuth::attempt($input)) { return response()->json([ 'success' => false , 'message' => 'Invalid Email or Password' , ], 401); } return response()->json([ 'success' => true , 'token' => $jwt_token, ]); } public function logout(Request $request) { $ this ->validate($request, [ 'token' => 'required' ]); try { JWTAuth::invalidate($request->token); return response()->json([ 'success' => true , 'message' => 'User logged out successfully' ]); } catch (JWTException $exception) { return response()->json([ 'success' => false , 'message' => 'Sorry, the user cannot be logged out' ], 500); } } public function getAuthUser(Request $request) { $ this ->validate($request, [ 'token' => 'required' ]); $user = JWTAuth::authenticate($request->token); return response()->json([ 'user' => $user]); } } |