在Angular / Symfony应用程序中注册用户

时间:2018-10-23 09:43:17

标签: angular symfony api-platform.com

我想知道在使用angular作为前端并使用symfony(带有api平台)作为后端的应用程序中注册新用户的建议方法是什么。

当前,我只是将新的用户对象发布到api / users中。但是我觉得这不是最佳做法,因为我需要向匿名身份验证的用户公开此路由。

我宁愿使用向匿名身份验证的用户公开的注册路由,而仅对具有ROLE_ADMIN等角色的经过完全身份验证的用户公开api /用户路由。

所以我的问题是:

  • 我是否想得太多?
  • 如果没有,如何在symfony方面实现这一目标?

现在我有一个像这样的SignUpController:

/**
 * @Route("/signup", name="signup")
 */
public function signUpAction(Request $request)
{
    $user = new User();

    $form = $this->createForm(UserType::class, $user);
    $form->handleRequest($request);

    if ($request->isMethod('POST')) {

        try {
            $em = $this->getDoctrine()->getEntityManager();
            $em->persist($user);
            $em->flush();

            return new JsonResponse($user);
        } catch (\Exception $e) {
            return new JsonResponse($e->getMessage(), 500);
        }
    }
}

但是这样就无法使用$form->isSubmitted()$form->isValid()之类的方法,更重要的是$form->handleRequest()什么也不做,这意味着我将不得不手动填充$user对象,这远非理想。

1 个答案:

答案 0 :(得分:1)

  

使用Angular也可以实现您的方案!因此,仅当您想使用Angular进行此操作时,才考虑这样做!

您可以有效地使用有角度的“ Route Guards” 。 以下代码演示了路由防护的使用-

let color = message.member.displayHexColor;
if (color == '#000000') color = message.member.hoistRole.hexColor;
// Embed
.setColor(color)

而且,在您的路线上-

Promise.mapSeries(functions.map(function => {
      return new Promise((resolve, reject) => {
          function(req, res, function(err) {
              if (success) {
                  return Promise.resolve(something()); //if we here, break mapSeries
              }
          });
      })
  }))
  .then(() => {
      return something();
  })

请参阅 this 了解更多详细信息。