После входа в систему я использую сеанс, чтобы установить детали пользователя. Если я использую почтальон, я могу получить информацию о сеансе. Если я попытаюсь выполнить регистрацию в моем браузере, он покажет null
Вот мой контроллер
namespace App\Http\Controllers; use App\Models\User; use Session; class UserController extends Controller { public function login(){ $postdata = file_get_contents("php://input"); $request = json_decode($postdata); $requestArray = array(); foreach($request as $key => $value){ $requestArray[$key] = $value; } $user = User::login($requestArray); Session::put("activeuser", $user); Session::save(); return json_encode(array('result'=>Session::get("activeuser"))); }
Контроллер для получения сведений о сеансе
namespace App\Http\Controllers; use Session; class ThisSessionController extends Controller { public function getdetails($key) { return json_encode(array($key => Session::get($key))); } }
конфиг / session.php
'driver' => 'file',
Изменить 1 Как точка информации, я использую laravel для создания только вызовов api. Поэтому мой домен будет api.mydomain.com/sessiondetails/activeuser
Это проблема?
Изменить 2
Первым объектом является вызов ajax для сеанса get url, а второй объект – возвращаемое значение после успешного входа в систему.
Два токена были совершенно разными.
Изменить – 3
Я обновил laravel с jwt, и он бросает JWT :: Factory недоступен. ниже мой обновленный код.
namespace App\Http\Controllers; use App\Models\User; use Illuminate\Http\Request; use App\Http\Requests; use JWTAuth; use Tymon\JWTAuth\JWTManager as JWT; use Tymon\JWTAuth\Exceptions\JWTException; class UserController extends Controller { public function login(Request $request){ $credentials = $request->only('username', 'password'); $user = User::login($requestArray); if($user){ $payload = JWTFactory::make($credentials); $token = JWTAuth::encode($payload); } return json_encode(array('result'=>$token)); }
Изменить – 4
Я изменил код внутри функции входа, и я получаю результат как
{"token":{}}
Код пользователя UserController @
$customClaims = ['foo' => 'bar', 'baz' => 'bob']; $payload = app('tymon.jwt.payload.factory')->make($customClaims); $token = JWTAuth::encode($payload);
ИЗМЕНИТЬ 5
Мой последний рабочий код, который может генерировать токен в laravel,
public function login(Request $request){ $credentials = $request->only('username', 'password'); try { $user = User::login($credentials); if(!$user) throw new Exception("Error Processing Request", 1); } catch (Exception $e) { return response()->json(['error' => false]); } $token = JWTAuth::fromUser($user); return response()->json(compact('token')); }