我正在使用 Laravel 创建一个应用程序,并构建一个小型内部 API 来连接到 Angular 前端。
我的身份验证工作正常,但想确保这是一种可接受的用户登录方式,并确保一切都是安全的。
会话控制器:
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!'));
}
拉拉维尔路线:
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,以免被任何人查看/点击,并且也想知道如何做到这一点。这是一个一般性问题,但任何见解将不胜感激。谢谢。