Добавить токен в каждый запрос / ссылку после входа в систему (laravel) - PullRequest
0 голосов
/ 12 февраля 2019

Этот вопрос может дублироваться, но мне могут потребоваться некоторые указания.

Сценарий: После входа пользователя в Интернет контроллер входа в laravel вернет токен JWT клиенту и сохранит его в локальном хранилище браузера.После этого для каждой ссылки (href) или запроса, отправляемого на сервер, требуется заголовок авторизации с токеном (для проверки в промежуточном программном обеспечении).

У меня есть домашняя страница с:

<a href="{{ route('devices') }}" id="mylink">Click me</a>
<button type="submit" id="submit-button">Submit</button>

и

<script type="text/javascript">

$(document).ready(function(){

$.ajaxSetup({
    headers: { "xCustomHeader": "xmyValue" }
});

$("#mylink").click(function(e) {

    var link = $(this).attr('href'); // get the anchor href link

    //attach the token from local storage
    $.ajaxSetup({
    headers: { "Authorisation ": "xxxxxx" }
    });

    //get request to web php route for GET request 
    //mostly problem here??
    $.ajax({                                                           
    method: "get",                                                  
    url: link
    });


});

</script>

Вот маршрут web.php:

Route::get('/devices', 'DevicesController@index')->name('devices');

Вот DevicesControllerкласс:

public function __construct()
{
       $this->middleware('token.verify'); //check whether the token is provided in Authorisation header
}
public function index(Request $request)
    {
        $location = $this->getUnitLatLng();

        return View::make("devices")->with($location); //return view 

    }

Вот класс промежуточного программного обеспечения TokenVerify:

public function handle($request, Closure $next, $guard = null)
{
    try {

        $token = $request->header('Authorisation');

        if ($token) {
            return $next($request);
        } 
    } catch (Exception $ex) {
        $response = array('success' => false, 'data' => null, 'detail' => array('message' => 'Messages::MSG_ERROR_500', 'error' => array($ex)));
        return response()->json($response);
    }
}

Проблема: похоже на то, что после входа на домашнюю страницу и нажатия кнопки привязки «Нажмите меня» промежуточное программное обеспечение неполучить токен заголовка авторизации.Ссылка Href не может прикрепить заголовок, поэтому я использовал ajax и получил представление.

но промежуточное ПО все еще не получает заголовок.есть мысли и исправлены?Как прикрепить токен заголовка к ссылке button / href?

1 Ответ

0 голосов
/ 12 февраля 2019

Вам, вероятно, не хватает preventDefault(), как описано здесь .Кроме того, если вы используете эту библиотеку для JWT, то вы можете включить токен в строку запроса, например http://api.mysite.com/me?token={yourtokenhere}

...