首頁 > php框架 > Laravel > 主體

laravel 實作app端登錄

王林
發布: 2023-05-26 11:43:07
原創
930 人瀏覽過

隨著智慧型手機應用程式不斷增加,行動應用程式開發的需求日益增加,用戶的登入已成為行動應用程式中非常重要的功能之一,因為用戶的登入不僅可以保護用戶資訊的安全,還可以方便用戶在不同設備上快速的存取他們的資訊。 Laravel 是一款流行的 PHP 框架,它提供了許多內建的功能和擴充包來幫助開發者實現應用程式的各種功能,包括 APP 端的登入功能。本文將介紹如何使用 Laravel 實作 APP 端登入功能。

一. Laravel 的安裝與設定

在開始實作 Laravel 中的 APP 端登入功能之前,需要先安裝並設定 Laravel 環境。首先需確保已經安裝 Composer 工具(https://getcomposer.org/)。接下來,執行以下命令在你的電腦中安裝 Laravel。

composer create-project --prefer-dist laravel/laravel myapp
登入後複製

其中,「myapp」是你想要建立的 Laravel 應用程式的名稱。

安裝完成後,可以進入 myapp 目錄並執行以下命令來啟動一個本機開發伺服器。

php artisan serve
登入後複製

造訪 http://localhost:8000 可以看到 Laravel 的歡迎頁面。接著,需要安裝和配置 Passport 擴充包,以支援 APP 端的登入功能。

執行以下命令來安裝Passport 擴充包:

composer require laravel/passport
登入後複製

安裝完成後,執行下列命令以產生必要的Passport 金鑰:

php artisan passport:keys
登入後複製

接下來,執行下列命令來產生Passport 的資料庫遷移:

php artisan migrate
登入後複製

二. 實作APP 端登入功能

  1. 建立使用者模型與控制器

首先,需要建立一個使用者模型,以便應用程式可以管理使用者。執行以下命令來建立名為User 的模型:

php artisan make:model User
登入後複製

接下來,建立一個名為AuthController 的控制器,並在其中加入以下程式碼:

<?php

namespace AppHttpControllers;

use AppModelsUser;
use IlluminateHttpRequest;
use IlluminateSupportFacadesAuth;
use Validator;

class AuthController extends Controller
{
    public function register(Request $request)
    {
        $validator = Validator::make($request->all(), [
            'name' => 'required',
            'email' => 'required|email|unique:users',
            'password' => 'required',
        ]);

        if ($validator->fails()) {
            return response()->json(['error' => $validator->errors()], 401);
        }

        $user = new User;
        $user->name = $request->name;
        $user->email = $request->email;
        $user->password = bcrypt($request->password);
        $user->save();

        $token = $user->createToken('MyApp')->accessToken;

        return response()->json(['token' => $token], 200);
    }

    public function login(Request $request)
    {
        $validator = Validator::make($request->all(), [
            'email' => 'required|email',
            'password' => 'required',
        ]);

        if ($validator->fails()) {
            return response()->json(['error' => $validator->errors()], 401);
        }

        $credentials = $request->only('email', 'password');

        if (Auth::attempt($credentials)) {
            $user = Auth::user();
            $token = $user->createToken('MyApp')->accessToken;
            return response()->json(['token' => $token], 200);
        } else {
            return response()->json(['error' => 'Unauthorized'], 401);
        }
    }
}
登入後複製

在上面的程式碼中, register 方法允許使用者進行註冊,login 方法允許使用者進行登入。如果使用者成功進行註冊或登錄,則會傳回一個存取令牌,該令牌將用於進行後續的使用者請求。

  1. 建立 API 路由

接下來,需要建立對應的 API 路由來處理使用者的登入和註冊請求。在 routes/api.php 檔案中,新增以下程式碼:

<?php

use IlluminateHttpRequest;
use IlluminateSupportFacadesRoute;
use AppHttpControllersAuthController;

Route::post('/register', [AuthController::class, 'register']);
Route::post('/login', [AuthController::class, 'login']);
登入後複製

上面的程式碼將註冊和登入請求對應到 AuthController 控制器中的相應方法。

三.測試登入功能

現在,所有的程式碼都已經準備好了,可以透過存取以下 url 來測試登入和註冊功能。

  • POST /api/register

    • 註冊新用戶。參數:name、email、password。
  • POST /api/login

    • #進行使用者登入。參數:email、password。

當使用者登入成功後,會回傳一個 token。可以使用該 token 來進行後續的 API 請求,以便驗證使用者身分。

$token = 'Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6ImZlYTcwMDU3NzhlZWUyMTU3MzliNTM3ODQyNTI0NWJiMGM5YjA3ZWIyMWNlMDhhMDM5ODUyYjczMzVjNWE1NjJlN2UwMGU4ZTQ5MjhhNzg1In0.eyJhdWQiOiIxMSIsImp0aSI6ImZlYTcwMDU3NzhlZWUyMTU3MzliNTM3ODQyNTI0NWJiMGM5YjA3ZWIyMWNlMDhhMDM5ODUyYjczMzVjNWE1NjJlN2UwMGU4ZTQ5MjhhNzg1IiwiaWF0IjoxNjMwMzkwNTM3LCJuYmYiOjE2MzAzOTA1MzcsImV4cCI6MTYzMDM5NDAzNywiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.XsIFsVCc3N1oZ70vzWn4wHQSv3Q-JVdlfu4LJkUPL0he_53bpgJrq5jw8mHygB-1-kpq62N7eG_r08fXKkmbiqeITmUiaGKa0prKzXCoexuYKuxYqG8j-HY2UyDp5g_TE6M4eW5FrcDpTJ0WcQ5ShDhdszUFQUH_qR52ypeEUmsF6CFwx1YJt4AmCFEy2CjsKOMl9K9o0mV_ytvBZ9drY6w6HTRfYfU7q5yuM-W3Qp6bbS-ljzY_2M0RWzwZJm6QvO3Byjhw1TNUrPHFs6xGlY4M7zgkDZxas5srQgpFjKof2LztN7QAJaiT_d6XAKpS24JA2-v2U7x3g';
$response = $this->withHeaders([
    'Authorization' => $token,
])->json('GET', '/api/user');
登入後複製

在這個例子中,使用 token 發送一個 GET 請求到 /api/user,該請求將傳回使用者的資訊。如果登入不成功,API 將傳回 401 錯誤代碼。如果登入成功,則會傳回使用者的資訊。

Laravel 中使用 Passport 擴充包來實現 APP 端的登入功能非常容易,只需要安裝並配置相應的擴充包即可。在本文中,我們示範如何使用 Laravel 完成一個完整的 APP 端的登入功能,實現了使用者的快速登入和安全保護。

以上是laravel 實作app端登錄的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!