我已經得到以下設置: AngularJS for the Frontend,它向$ Laravel API發出$ http請求。 例如,在開始時,如果Laravel中的會話存在,mainCtrl請求會將用戶登錄到應用程序中。 我用郵差測試了API,它完美地工作。AngularJS和Laravel - CORS
我使用Laravel 5
我送一個JSON這樣
{
"user":"user",
"password":"password"
}
和API檢查它是否是一個有效的,如果讓他返回一個訪問令牌。 它會將令牌和用戶標識寫入laravel會話。
使用rout/checkLogin檢查是否存在具有有效令牌的會話。這也適用於郵差。
這裏的兩個函數從laravel後端的登錄名和checkLogin:
public function login(){
$user = User::where('email', '=', Input::get('login'))->first();
if($user == null)
$user = User::where('login', '=', Input::get('login'))->first();
if($user != null){
if($user->password==sha1(Input::get('password'))){
$token = new Token;
$token->userid = $user->id;
$token->token=self::getGUID();
Session::put('user_id', $user->id);
Session::put('user_token', $token->token);
$token->save();
return $token->token;
}else
return "Wrong username or password";
}else
return "Wrong username or password";
}
public function checkLogin(){
$token =null;
if(Session::has('user_token')){
$token = Session::get('user_token');
}
if($token == null){
$token = Input::get('token');
}
if($token != null){
$test = Token::where('token', '=', $token)->where('userid', '=', Session::get('user_id'))->first();
return User::where('id', '=', $test->userid)->first();
}
return "no session";
}
我知道是什麼做的是創造一些角度的功能得到這個工作真的。 當我打開我的網站時,它應該檢查用戶是否登錄。它實際上是否會觸發Login中的get功能。
example.factory('Login', function($http) {
return {
get : function() {
return $http({
method: 'GET',
url: 'http://api.example.com/checkLogin',
headers: { 'Content-Type' : 'application/json' }
});
},
save : function(loginData) {
return $http({
method: 'POST',
url: 'http://api.example.com/login',
headers: { 'Content-Type' : 'application/json' },
data: loginData
});
}
}
});
它也似乎工作正常。在我的控制檯中,我看到「沒有會話」。如果我沒有登錄,應該可以。 所以我現在嘗試登錄。我運行保存功能從上面的登錄。與我的數據放在一起是這樣的:
$scope.logmein = function() {
loginData = {
'login' : $scope.login,
'password' : $scope.password
};
Login.save(loginData)
.success(function(data) {
console.log(data);
Login.get()
.success(function(getData) {
console.log(getData);
if(data==="no session"){
$scope.loggedin=false;
}
else{
$scope.loggedin=true;
}
});
})
.error(function(data) {
console.log(data);
});
}
當我點擊提交我得到我的控制檯令牌像預期。現在一切都應該沒問題。爲了更新我的網站,我再次運行checkLogin功能。它現在應該讓我回到我的會話,但它說沒有會話。當我登錄時,會話應該放在一起。 我已經嘗試了很多小時來解決這個問題,但是很多次它給了我一個CORS錯誤,或者當沒有發現CORS錯誤時,它只是做了我剛剛解釋的內容。
我希望有人能找出原因。
只是一個註釋...'header:{'Content-Type':'application/json'}'對GET請求沒有意義。你不是*發送* application/json到服務器,你從服務器接收它。 – 2015-02-11 21:24:10
哦,對不起是我的錯。可悲的是它沒有解決問題 – Sebi55 2015-02-11 21:25:39