Symfony 2 - FOSUserBundle - 如何在API中集成

时间:2013-10-24 18:53:17

标签: api symfony mobile fosuserbundle fosrestbundle

我正在研究一个新项目symfony 2.我正在同时学习这个框架。 对于用户管理,我使用捆绑FOSUserBundle。 我的项目运作良好,我可以登录,注册,注销和所有其他命令。

问题是我想制作智能手机应用程序,它将使用我的Symfony应用程序的API。 在应用中,用户必须登录或注册。 是否也可以为API使用FOSUserBundle方法?

我研究了另一个非常适合制作API的软件包,它是FOSRestBundle。 如果没有解决方案,您认为我必须创建自己的用户方法,如:

    /api/login
    /api/registrer 

然后,在这个方法中,我重定向到FOSUserBundle方法? 我很想知道什么是最好的,最简洁的登录方式,并从智能手机注册FOSUserBundle,所以使用API​​

由于

3 个答案:

答案 0 :(得分:5)

我也有这个问题。 我发现最好的解决方案就是这个

use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;

class YourController extends Controller{
//Other Methods..

public function loginAction(Request $request){
    try{
        $token = $this->get('security.authentication.manager')->authenticate(new UsernamePasswordToken('username', 'password', 'firewall'));
        $this->get('security.context')->setToken($token);
    }
    catch(BadCredentialsException $e){
        return new Response("Bad credentials", 403);
    }
    return new Response("success");
}
}

答案 1 :(得分:2)

我使用了FOSRestBundle。

此捆绑包非常强大且易于实现。 文档非常完整。

FOSRestBundle here

的github链接

希望它有所帮助

答案 2 :(得分:1)

您需要检查WSSE以及如何integrate it到symfony。 另请查看此post。并且有bundle实现WSSE身份验证。 WSSE是您应用的最佳解决方案之一。