Stu*_*uck 5 android bundle symfony
首先,我想创建一个用户从我的Android应用程序向服务器发送一个后请求,该服务器使用Symfony2和FOSUserBundle.
最后,我想从移动应用程序登录用户,然后与服务器进行数据通信.
我知道如何在android-device上实现post-request.但我不知道如何配置FOSUserBundle和security.yml等以满足我的需求.虽然我可能需要一个_csrf_token或其他东西,我不知道从哪里得到它.
我已经将身份验证方法从form_login更改为http_basic,并认为这将是进行身份验证的最简单方法(使用https来保护密码).
但是现在......我需要做什么,以实现创建和登录没有表单的操作?我需要在移动设备上的后请求中添加什么内容?
感谢您的任何想法,意见和解决方案!
我遇到了同样的问题,但我找到了注册的解决方案 :(用户输入用户名、电子邮件和密码)
在 UserBundle 的 UserController ( src/Project/UserBundle/Controller/DefaultController ) 中定义一个新函数registerAction():
public function registerAction()
{
$user = new User();
$request = $this->getRequest();
$username = $request->request->get('username');
$password= $request->request->get('password');
$email= $request->request->get('email');
$factory = $this->get('security.encoder_factory');
$encoder = $factory->getEncoder($user);
$password = $encoder->encodePassword($password, $user->getSalt());
$user->setPassword($password);
$user->setUsername($username);
$user->setUsernameCanonical($username);
$user->setEmail($email);
$user->setEmailCanonical($email);
$user->setEnabled(true);
$user->setLocked(false);
$user->setExpired(false);
$user->setCredentialsExpired(false);
$em = $this->get('doctrine')->getEntityManager();
$em->persist($user);
$em->flush();
/* $response = new Response(json_encode(array('user' => $tes)));
$response->headers->set('Content-Type', 'application/json');
return $response;*/
return new JsonResponse('good');
}
Run Code Online (Sandbox Code Playgroud)
}
并且不要忘记导入:
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\Security\Core\Encoder\MessageDigestPasswordEncoder;
use Telifoon\UserBundle\Entity\User;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\JsonResponse;
Run Code Online (Sandbox Code Playgroud)
在UserBundle/Resources/config/routing.yml中添加以下路由:
inscription_post: 模式: /v1/api/register 默认值: { _controller: ProjectUserBundle:Default:register } 要求: _method: POST
我的实体(src/Project/UserBUndle/Entity/User)是:
use FOS\UserBundle\Model\User as BaseUser;
/**
* User
*/
class User extends BaseUser
{
public function __construct()
{
parent::__construct();
// your own logic
}
}
Run Code Online (Sandbox Code Playgroud)如果测试用户已正确添加到我的数据库中:)
| 归档时间: |
|
| 查看次数: |
3945 次 |
| 最近记录: |