簡體   English   中英

Angular Auth反對Laravel后端

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM