我想知道在使用angular作为前端并使用symfony(带有api平台)作为后端的应用程序中注册新用户的建议方法是什么。
当前,我只是将新的用户对象发布到api / users中。但是我觉得这不是最佳做法,因为我需要向匿名身份验证的用户公开此路由。
我宁愿使用向匿名身份验证的用户公开的注册路由,而仅对具有ROLE_ADMIN等角色的经过完全身份验证的用户公开api /用户路由。
所以我的问题是:
现在我有一个像这样的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
对象,这远非理想。
答案 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 了解更多详细信息。