AngularJS Symfony3授权

时间:2016-05-14 15:49:07

标签: angularjs symfony

所以,我有symfony3 + FOSRestBundle + FOSUserBundle + AngularJS。我创建了AuthenticationHandler,例如:Symfony2 AJAX Login

和其他控制器,它获取POST,然后通过表单验证数据,最后返回成功或错误字段。当然我在AngularJS控制器中创建了这个表单。

SF控制器:

 public function postPostmanAction(Request $request) {
    $postman = $this->container->get("postman_form.handler");
    return $postman->post($request->request->all());
  }

SF Handler:

class PostmanFormHandler {
// ....
public function post(array $parameters) {
    $postman = new Postman;
    return $this->processForm($postman, $parameters);
  }

  protected function processForm($postman, $parameters) {
    $form = $this->formFactory->create('AppBundle\Form\PostmanType', $postman);
    $form->submit($parameters);
    $em = $this->repository;

    if ($form->isValid()) {
      $em->getRepository("AppBundle:Postman")->save($postman);
      return $postman;
    }
    return $form;
  }
}

我在AngularJS中创建表单以登录用户和控制器,然后我将access_controll添加到表单(postPostmanAction)。

现在,当我尝试添加邮递员时,我看到错误403,所以没关系。

当我登录时,JSON返回:

{"success":true}

并刷新到标签,在我看到的profiller symfony中:已验证:是和用户名。

现在我可以在登录后添加邮递员。

我有问题,AngularJS不知道用户何时通过身份验证。用户应该在登录后看到有权访问的视图。

app.config(['$routeProvider', function ($routeProvider) {
    $routeProvider.when('/postman/new', {
      templateUrl: '/MobilePost/web/assets/partials/postman/postman-form.html',
      controller: 'CreatePostmanForm'
    }).when('/login',{
      templateUrl: '/MobilePost/web/assets/partials/user/login-form.html',
      controller: 'LoginUserForm'
    }).otherwise({
      templateUrl: '/MobilePost/web/assets/partials/index.html',
    });
  }
]);

如何检查Angular中的授权和权限?

1 个答案:

答案 0 :(得分:0)

你可以把一个变量' isAuthenticated'在您的JSONResponse中:经过身份验证时为TRUE,未经过身份验证时为FALSE。

你在angularJS代码中玩条件。

另外,我建议您使用https://github.com/FriendsOfSymfony/FOSJsRoutingBundle