Lag / Innlogging Bruker fra en mobil enhet ved hjelp Symfony2 og FOSUserBundle

stemmer
5

For det første, jeg ønsker å opprette en bruker sender en post-forespørsel fra min android app til serveren, som bruker Symfony2 og FOSUserBundle.

Til slutt, jeg vil logge en bruker fra appen og deretter kommunisere data med serveren.

Jeg vet hvordan du skal gjennomføre en post-forespørsel på android-enheten. Men jeg vet ikke hvordan jeg må konfigurere FOSUserBundle og security.yml etc for å passe mine behov. Selv om jeg kanskje trenger en _csrf_token eller noe, og jeg vet ikke hvor du får det fra.

Jeg har allerede endret autentiseringsmetode fra form_login til http_basic og tror at dette vil være den enkleste måten å gjøre godkjenning (med https for å sikre passord).

Men nå .. hva må jeg gjøre, for å oppnå å skape og logging i handlinger uten former? Hva trenger jeg å sette i post-forespørsel på den mobile enheten?

Takk for alle ideer, kommentarer og løsninger !!

Publisert på 27/05/2011 klokken 21:12
kilden bruker
På andre språk...                            


2 svar

stemmer
3

En sen svar, men det kan hjelpe. Jeg jobber på en lignende situasjon, og jeg fikk denne:

i security.yml

security:
providers:
    fos_userbundle:
      id: fos_user.user_manager

firewalls:
    main:
        pattern: ^/
        stateless: true
        http_basic:
            realm: "API"

access_control:
    - { path: /, role: ROLE_USER }

role_hierarchy:
    ROLE_OWNER:       ROLE_USER
    ROLE_SUPER_ADMIN: ROLE_ADMIN

I config.yml:

fos_user:
db_driver: orm
firewall_name: main
user_class: <your user class>

I min test-metode:
Referanse: Godkjenning for en Symfony2 api (for mobile app bruk)

public function testAuthentication() 
{
    $client = $this->createClient();

    // not authenticated
    $client->request('GET', '<url>');
    $this->assertEquals(401, $client->getResponse()->getStatusCode());

    // authenticated
    $client->request('GET', '<url>', array(), array(), array(
        'PHP_AUTH_USER' => '<username from your database>', 
        'PHP_AUTH_PW' => '<password>'
    ));
    $this->assertEquals(200, $client->getResponse()->getStatusCode());

}

For kommunikasjon med det API, vil jeg foreslå cURL eller Buzz

Håper dette hjelper!

Jubel,

Dieter

Svarte 04/01/2012 kl. 22:48
kilden bruker

stemmer
2

Jeg hadde det samme problemet, men jeg fant løsningen for registrering: (brukeren skriver inn brukernavn, e-postadresse og passord)

  1. I UserController av UserBundle ( src / prosjekt / UserBundle / Controller / DefaultController ) definerer en ny funksjon 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');
    }
    

    }

og ikke glemte å importere:

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;
  1. i UserBundle / Resources / config / routing.yml add follwoing rute:

    inscription_post: mønster: / v1 / api / register som standard: {_controller: ProjectUserBundle: Standard: registrere} Krav: _method: POST

  2. Min enhet ( src / prosjekt / UserBUndle / Entity / User ) er:

    use FOS\UserBundle\Model\User as BaseUser;
    
    /**
     * User
     */
    class User extends BaseUser
    {
        public function __construct()
        {
            parent::__construct();
            // your own logic
        }
    }
    
  3. Hvis testen brukeren legges correctely til databasen min :)

Svarte 12/02/2014 kl. 10:41
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more