nofear87
nofear87

Reputation: 869

Basic Authentication with AngularJS (resource) and Laravel

I am searching a way to pass the credentials to my laravel api.

Javascript:

app.factory( 'APIService', function( $resource, $http ) {

    http.defaults.headers.common['Authorization'] = 'Basic ' + 'email:password';

    var data = $resource( 'api/v1/:route', {route: "@route"} );

    return data;

});

Laravel:

Route::filter('auth.basic', function()
{

    return Auth::basic();

});

My solution does'nt work :(

Here is the POSTMAN Output:

Request URL:http://localhost:8888/laravel-emt/public/api/v1/publications
Request Method:GET
Status Code:200 OK
Request Headersview source
Accept:*/*
Accept-Encoding:gzip,deflate,sdch
Accept-Language:de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4
Authorization:Basic cm9iZXJ0LndhbHRoZXJAdHUtaWxtZW5hdS5kZTpjb21tYW5kZXIxNw==
Cache-Control:no-cache
Connection:keep-alive
Cookie:laravel_session=eyJpdiI6IkhSOUVZcjk5NTJIemdvb1ErXC9FQ1g4TVdYSmp6UHpXejVIbjBodTdmcXlRPSIsInZhbHVlIjoiRTFBNWpHNGZ5OGRvQ3MxNFVkcm8ra2FINDBmdE01XC9RRWxJSitJMTBROE1tbFpuS1JIN1o1YjFyVnRPUHVSZFE2TUZEWHdZSFBsdzdnRkViVEt0cXd3PT0iLCJtYWMiOiI0MjFmYmNhZTM1NDliYzJiNTI5YTNhNTZkZGVlODE5OTg0MGZjOTdiYzJkM2I2YjkyMTQ4YjE2Y2ViMGY5N2FhIn0%3D
Host:localhost:8888
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36
Response Headersview source
Cache-Control:no-cache
Connection:Keep-Alive
Content-Type:application/json
Date:Sat, 15 Mar 2014 17:11:46 GMT
Keep-Alive:timeout=5, max=100
Server:Apache/2.4.4 (Win32) OpenSSL/1.0.1e PHP/5.5.3
Set-Cookie:laravel_session=eyJpdiI6InpRVFwvZDliRWpsRE0xcmlDdnpoNm5wM25Md0QrM3l1NVFXaWtMZ0RIZmJZPSIsInZhbHVlIjoibkEyZDZ1b2REK1B6VlJXWVFVK1NlS1plbCtMNE1NUXZVU3BRWk5Da09qOGVLOTVSYkNLSmpJaldxM0F0clYxOW1kVUlUY1RNdDRqSFAydWQ1ZlF0ZkE9PSIsIm1hYyI6ImZiMDVlNTk1ZDYwNjQ0Nzg0ZTY0YTYyNWUwYTNmYWRlY2ZkY2JmNDYzYmJkYmZmMmQ0MGU0ZTQ5Y2U1MzhjM2EifQ%3D%3D; expires=Sat, 15-Mar-2014 19:11:46 GMT; Max-Age=7200; path=/; httponly
Transfer-Encoding:chunked
X-Frame-Options:SAMEORIGIN
X-Powered-By:PHP/5.5.3

and here is the AngularJS Output:

Accept:application/json, text/plain, */*
Accept-Encoding:gzip,deflate,sdch
Accept-Language:de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4
Cache-Control:max-age=0
Connection:keep-alive
Cookie:laravel_session=eyJpdiI6IlYwUDNUM01oSmJrWVwvTHAzQWQycmJ6Z25oaEgzaEJKR0ZLbzNPTVFIRDk0PSIsInZhbHVlIjoiSmxzMG1URUNYTFBnZmRkNk9NcFQyb2JwNWJDaW5wVlU2YVZYeFo2bTQwbUc2cVM5OThtdEVSRmhPV25cL2dtOUZHbXZnekJ3NzNsS2dOWXNRTGJMZWNRPT0iLCJtYWMiOiIyYzZhOGNhNTM2MjJhNjVkMzkxZDM5NmYxOTIwYWQ1YmNhYzEwYjg4MmM3NjU1NzJhNGJhYmI0OTU2MzczMTNlIn0%3D
Host:localhost:8888
Referer:http://localhost:8888/laravel-emt/public/secadmin
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36
Response Headersview source
Cache-Control:no-cache
Connection:Keep-Alive
Content-Type:application/json
Date:Sat, 15 Mar 2014 19:17:02 GMT
Keep-Alive:timeout=5, max=99
Server:Apache/2.4.4 (Win32) OpenSSL/1.0.1e PHP/5.5.3
Set-Cookie:laravel_session=eyJpdiI6IkZiNXJBUmpaSU1RTkxNUHhaXC9mdEN3cHJ5REQ5aE9DajdXWCthMnBKN3ZNPSIsInZhbHVlIjoibXZjVjZ4dm1cL1lTY01XeEFHQyt2YmFBWWlFeWl2NVwvZm5iTlI4eG5UdHJBS003dkpreFJ1WU1qZldqQThndTRMWTN6dWRXVXhJelZOYWRQb1V0XC9nc0E9PSIsIm1hYyI6IjM3ZDFlNzc3MjBmZjk0M2UxZDY5NzFiMTc1YzIzYmVhODE1ZWM1MmVkZjEyYTRmMWNlMTgwYTA5ZDk3ODllMTkifQ%3D%3D; expires=Sat, 15-Mar-2014 21:17:02 GMT; Max-Age=7200; path=/; httponly
Transfer-Encoding:chunked
X-Frame-Options:SAMEORIGIN
X-Powered-By:PHP/5.5.3

I'am asked to input the password manually.

I hope these are the things you need to help ;-)

Best regards, Robert

Upvotes: 3

Views: 4506

Answers (2)

jairud
jairud

Reputation: 51

It works if you encode 'email:password' as Base64.

Upvotes: 1

Jannik Jochem
Jannik Jochem

Reputation: 1546

Looking at your code, I'd guess that it's just a typo:

app.factory( 'APIService', function( $resource, $http ) {
        // should be $http.defaults
        http.defaults.headers.common['Authorization'] = 'Basic ' + 'email:password';
        var data = $resource( 'api/v1/:route', {route: "@route"} );
        return data;
    });

Upvotes: 1

Related Questions