所以,我有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中的授权和权限?
答案 0 :(得分:0)
你可以把一个变量' isAuthenticated'在您的JSONResponse中:经过身份验证时为TRUE,未经过身份验证时为FALSE。
你在angularJS代码中玩条件。
另外,我建议您使用https://github.com/FriendsOfSymfony/FOSJsRoutingBundle。