2014-10-31 60 views
0

我无法弄清楚如何构建我的应用程序。 它目前是使用普通控制器,树枝视图等构建的Web应用程序,并使用FOS用户包进行身份验证。在这个应用程序中,可以创建应该被看作是“移动用户”的实体。现在我需要一个移动应用程序的API,用于“移动用户”登录,但我无法弄清楚应该如何构建这个身份验证。Symfony2,正常+休息认证

我应该与用户一起在用户表中创建用户吗?是否有可能要求用户具有特定角色才能登录正常的登录页面?

或者我应该为“移动用户”实体添加用户名和密码列,并为api进行自定义登录。但是,这是如何完成的?我正考虑在移动应用程序中使用angularjs,如果这对解决此问题有任何影响。

+0

您想要移动用户必须登录吗?或者该用户是否应被视为已通过身份验证? – Chausser 2014-10-31 21:40:22

+0

由于将有多个移动用户,他们将不得不登录。 – 2014-10-31 21:44:25

+0

移动用户是否与其他用户不同? – Chausser 2014-10-31 21:45:51

回答

0

一个可能的解决方案将使用FOSOAuthServerBundle

在这种情况下,你可以有你一样的地方让您的用户同时使用网络应用和移动应用。用户可以使用Web和移动应用程序中的相同凭据进行身份验证 - 但通过拨打ajax可以完成移动应用程序的身份验证。

感谢oAuth您不会将登录名/密码保存在您的移动应用程序中。 Bundle本身是以一种与Symfony完美结合的方式编写的。

要使用不同的安全访问不同的资源,你只是配置不同的防火墙:

security.yml

security: 
    firewalls: 
     oauth_token: 
      pattern: ^/oauth/v2/token 
      security: false 
     api: 
      pattern: ^/api 
      fos_oauth: true 
      stateless: true 
     web_secured: 
      pattern: ^/ 
      stateless: true 
      your_security_factory:  true 

检查这些资源的更多信息:

0

你不必使用不同的用户提供,但你需要在security.yml配置不同的防火墙:

firewalls: 
    api_firewall: 
     pattern: "^/api/" 
     form_login: 
      check_path: /api/login_check 
      login_path: /api/login 

,那么你仍然可以显示用户登录表单。使用角度,让它过帐到check_path。 Symfony使用cookie来存储验证信息,因此您可能必须配置角度来接受并在随后的请求中传递这些信息。

如果你不想这样做,你可以使用一个API密钥和编写自定义的认证实施SimplePreAuthenticatorInterface