У меня есть решение, которое использует Laravel 5
. Он не полностью разработан на laravel.
Уровень API находится в другом проекте, и только веб-уровень использует laravel.
До сих пор я сохранял данные аутентификации в сеансе и использовал базовый способ обработки аутентифицированных пользователей.
Теперь я пытаюсь обновить структуру веб-приложения до модуля laravel frontend & backend
. Трудность, с которой я сталкиваюсь, заключается в использовании концепции providers
и guards
, поскольку она не взаимодействует с базой данных напрямую.
Пока что я сделал контроллер, я проверяю роль пользователя и аутентифицируюсь с использованием $_Session
.
Было бы очень полезно, если бы кто-нибудь мог просветить меня об использовании RESTful API с защитой Laravel Auth.
Регистрационный контроллер
<?php
namespace App\Http\Controllers;
require_once dirname(__DIR__, 3) . '/web_api/DependencyManager.php';
use DBHandlers;
use Facebook;
use Google;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Mail;
use SessionManager;
use Session;
class RegisterController extends Controller
{
public function mRegister($ref = null)
{
$session = new SessionManager();
$db = new DBHandlers();
isset($ref) && $ref == 'google' ? $registered_via_google = true : $registered_via_fb = true;
if (isset($_SERVER['QUERY_STRING'])) {
if (isset($ref)) {
if (strcmp($ref, "facebook") == 0) {
$registered_via_fb = true;
} else {
$registered_via_google = true;
}
}
}
if (isset($registered_via_fb) && $registered_via_fb) {
// echo 'Facebook';
try {
$fb = new Facebook();
$fb->mProcess();
// echo $_GET['code'];
// print_r($fb->getAcessToken());
$fb_access_token = (string)$fb->getAcessToken();
// echo $fb_access_token;
if (isset($fb_access_token) && $fb_access_token != '' && !empty($fb_access_token)) {
$result = $db->mFBLogin($fb_access_token);
$session->LogUserIn($result);
} else {
$registration_error = true;
}
} catch (Exception $e) {
$registration_error = true;
}
}
}
public function mLogout()
{
Session::flush();
redirect()->route('index')->send();
die();
}