【发布时间】:2014-04-20 07:29:40
【问题描述】:
我正在寻找一种将凭据传递给我的 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();
});
我的解决方案不起作用:(
这是邮递员的输出:
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
这里是 AngularJS 输出:
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
我被要求手动输入密码。
我希望这些是您需要帮助的事情 ;-)
最好的问候,罗伯特
【问题讨论】:
-
有什么不好的?你得到什么错误?请求中发生了什么? (Chrome 中的网络面板);你得到控制台错误吗?您是否看到任何服务器端错误?
-
Cosole 没有任何错误。但是浏览器要求我输入凭据。所以我认为我没有以正确的方式通过凭证。
-
我建议尝试使用 POSTman for Chrome 构建请求,并确保格式正确。然后为角度做这件事应该很容易。
-
谢谢!使用 Postman 可以正常工作。但我不知道如何让它与 angularjs 一起工作。
-
我们需要您在问题中编辑的请求。请向我们提供您在 Angular 中运行时从网络面板生成的原始请求,以及在您通过邮递员运行时从网络面板生成的原始请求,以及 HTTP 状态代码