设计API身份验证

Xia*_*Guo 45 ruby api json ruby-on-rails devise

我正在开发一个rails web应用程序,它还为移动设备提供基于JSON的API.移动客户端应首先获得带有(email/pass)的令牌,然后客户端将使用令牌进行后续API调用.

我是Devise的新手,我正在寻找一个Devise API看起来authenticate(email, pass)并期望它返回true/false,然后根据我将创建并交回令牌或返回拒绝消息.但似乎Devise没有提供这样的东西.

我知道Devise 1.3提供了基于JSON的auth,但这与我需要的有点不同 - 我需要生成令牌并处理回客户端,然后在使用令牌完成auth之后.

有人可以给点指点吗?

Jes*_*ott 49

有一个名为的设计配置:token_authenticatable.因此,如果您将其添加到"用户"中的设计方法中,那么您只需通过调用即可在API中进行身份验证

"/api/v1/recipes?qs=sweet&auth_token=[@user.auth_token]"
Run Code Online (Sandbox Code Playgroud)

你可能也想在你的用户中使用它:

before_save :ensure_authentication_token
Run Code Online (Sandbox Code Playgroud)

更新(使用API​​授权代码)

您正在寻找的方法是:

resource = User.find_for_database_authentication(:login=>params[:user_login][:login])
resource.valid_password?(params[:user_login][:password])
Run Code Online (Sandbox Code Playgroud)

这是我的要点,带有设计的全面JSON/API登录

  • 再次感谢Jesse,正是我想要的 (3认同)
  • 如果您在2013年11月之后到达此处,则需要知道已从Devise中删除了Authenticable,因此此解决方案可能无法正常工作.看看这个:https://github.com/plataformatec/devise/wiki/How-To :-Simple-Token-Authentication-Example (2认同)