[英]Angular Auth against Laravel backend
我正在使用Laravel創建一個應用程序並構建一個小的內部API來連接到Angular前端。
我有auth工作,但希望確保這是一種可接受的方式來登錄用戶,並確保一切都是安全的。
會話控制器:
public function index() {
return Response::json(Auth::check());
}
public function create() {
if (Auth::check()) {
return Redirect::to('/admin');
}
return Redirect::to('/');
}
public function login() {
if (Auth::attempt(array('email' => Input::json('email'), 'password' => Input::json('password')))) {
return Response::json(Auth::user());
// return Redirect::to('/admin');
} else {
return Response::json(array('flash' => 'Invalid username or password'), 500);
}
}
public function logout() {
Auth::logout();
return Response::json(array('flash' => 'Logged Out!'));
}
Laravel路線:
Route::get('auth/status', 'SessionsController@index');
角廠:
app.factory('Auth', [ "$http", function($http){
var Auth = {};
Auth.getAuthStatus = function() {
$http({
method: "GET",
url: "/auth/status",
headers: {"Content-Type": "application/json"}
}).success(function(data) {
if(!data) {
console.log('Unable to verify auth session');
} else if (data) {
console.log('successfully getting auth status');
console.log(data);
// return $scope.categories;
Auth.status = data;
return Auth.status;
}
});
}
return Auth;
}
]);
然后我會將整個應用程序包裝成類似“appController”的東西,並將'Auth'工廠聲明為依賴項。 然后我可以調用Auth.getAuthStatus()並根據用戶狀態隱藏/顯示內容,因為這基本上是SPA。
我意識到我還需要隱藏/ auth / status URI不被任何人查看/命中,並且想知道如何做到這一點。 這是一個普遍的問題,但任何見解將不勝感激。 謝謝。
好問題。 我之前已經回答了同樣的問題,所以我會說同樣的話。
在SPA中進行身份驗證有點不同,因為您幾乎完全分離了Laravel應用程序和Angular。 Laravel負責驗證,邏輯,數據等。
我強烈建議你閱讀底部鏈接的文章。
您可以使用Laravel的路由過濾器來保護您的路由免受未經授權的用戶的攻擊。 但是,由於您的Laravel應用程序現在只是一個端點,因此前端框架將在認證和授權方面做得非常繁重。
設置路由過濾器后,這不會阻止授權用戶嘗試執行他們無權執行的操作。
我的意思是上面的例子:
您有一個API端點:/ api / v1 / users / 159 / edit
端點是RESTful 7之一,可用於編輯用戶。 任何軟件工程師或開發人員都知道這是一個RESTful端點,如果您的應用程序授權,可以向該端點發送包含數據的請求。
您只希望用戶159能夠執行此操作或管理員。
無論您想要調用它們,解決方案都是角色/組/權限。 在Angular應用程序中設置應用程序的用戶權限,並可能將該數據存儲在已頒發的令牌中。
閱讀這篇偉大的文章(在AngularJS中),了解如何使用前端JavaScript框架正確地進行身份驗證/授權。
文章: https : //medium.com/opinionated-angularjs/techniques-for-authentication-in-angularjs-applications-7bbf0346acec
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.