Laravel auth AJAX没有弹出窗口

时间:2014-03-12 08:26:05

标签: php jquery ajax laravel laravel-4

我一直在浏览tutorial

从终端cURL请求一切正常但我在使用jQuery时获得了一个用于身份验证的弹出窗口。有没有办法阻止此弹出窗口并将登录凭据从jQuery传递给API?究竟是什么 - 用户从终端工作,我如何模拟"这来自jQuery?

终端:

$ curl --user username:password http://localhost/api/v1/email
{"error":false,"authEmail":"me@localhost","message":"request success"}

Laravel控制器方法:

public function index() {
    return Response::json(array(
        'error' => false,
        'authEmail' => Auth::user()->email,
        'message' => 'request success'), 200);
}

Laravel过滤器:

Route::filter('auth.basic', function() {
return Auth::basic('username');
});

Laravel路线:

Route::group(array('prefix' => 'api/v1', 'before' => 'auth.basic'), function() {
Route::resource('email', 'EmailController');
});

jQuery的:

(function($) {
$(document).ready(function() {
    $.ajax({
        url: 'http://localhost/api/v1/email',
        type: 'GET',
        dataType: 'json',
        data: {
            username: 'username',
            password: 'password'
        }
    }).complete(function(data) {
        console.log(data.responseJSON);
    });
});
})(jQuery);

2 个答案:

答案 0 :(得分:1)

您可以使用beforeSend回调添加身份验证信息:

(function($) {

    $(document).ready(function() {

        ajax({

            url: 'http://localhost/api/v1/email',

            type: 'GET',

            dataType: 'json',

            beforeSend: function(xhr) { xhr.setRequestHeader(

                "Authorization",     

                "Basic " + btoa('username' + ":" + 'password')); }

            })

            .complete(function(data) {console.log(data.responseJSON)})

    });

})(jQuery);

答案 1 :(得分:-2)

您可以为jQuery ajax请求添加用户名和密码设置:

 $.ajax({
        url: 'http://localhost/api/v1/email',
        type: 'GET',
        dataType: 'json',
        username: 'username',
        password: 'password'
    }).complete(function(data) {
        console.log(data.responseJSON);
});

我认为这应该有用。