我是新来的rails。我正在尝试为使用JSON进行身份验证的移动应用程序编写API。我想使用Devise进行身份验证。我相信Devise> 1.3也增加了对JSON的支持,但我无法找到任何示例或文献。使用Devise 1.3来验证JSON登录请求
有人可以请我指点任何资源或提供一些示例代码?
谢谢! 萨蒂扬
我是新来的rails。我正在尝试为使用JSON进行身份验证的移动应用程序编写API。我想使用Devise进行身份验证。我相信Devise> 1.3也增加了对JSON的支持,但我无法找到任何示例或文献。使用Devise 1.3来验证JSON登录请求
有人可以请我指点任何资源或提供一些示例代码?
谢谢! 萨蒂扬
也许这一个>http://jessehowarth.com/devise?
我打算在一两周内做同样的事情。
当使用html格式响应时,Jesse Howarth的解决方案将打破浏览器的日志记录。如果你想既JSON和HTML工作的成才试试这样:
class SessionsController < Devise::SessionsController
def create
resource = warden.authenticate!(:scope => resource_name, :recall => "#{controller_path}#new")
set_flash_message(:notice, :signed_in) if is_navigational_format?
sign_in(resource_name, resource)
respond_to do |format|
format.html { respond_with resource, :location => after_sign_in_path_for(resource) }
format.json {
return render :json => { :success => true,
:user => resource
}
}
end
end
end
而且不要忘记更改航线使用该控制器
正如我上面评论的那样,如果您使用的是Rails 3.1.0或更高版本,请自行推出。 – 2012-01-19 22:21:12
@Tombart,该方法正常工作正确的uid/pwd json登录。如何处理错误密码的情况?在userwarden.authenticate!()将刚刚吐出的HTML重定向使用纯文本错误消息。 – GeorgeW 2012-08-10 16:03:11
我无法在链接页面最好的答案,所以我想我会加我自己的。 您不需要创建任何自定义控制器。所有你需要做的是以下几点:
在你的application.rb中加入下面的应用程序类
config.to_prepare do
DeviseController.respond_to :html, :json
end
在配置/初始化/ devise.rb :json
添加到格式。该行默认注释掉,因此您需要取消该行的注释。
config.navigational_formats = ['*/*', :html, :json]
在此之后,你可以发送一个JSON对象sign_in.json或任何你已经在你的路线登录设置。
{
"user": {
"email": "[email protected]",
"password": "blah"
}
}
成功后,它将返回201创建,并将登录用户作为JSON对象返回。出错时,它将返回401并显示JSON消息,指出失败的原因。
实施例:
{"error":"Invalid email or password."}
这里是如果使用的是主链上的很好的例子/ Marionntte上的前端。
非常感谢!这有帮助。 – Satyam 2011-05-23 07:15:25
为了记录,我最终在Devise + JSON方面遇到了很多麻烦。我建议使用Rails 3.1的has_secure_password并添加自己的自定义功能。 – 2011-09-22 11:40:09
诅咒!我们无法找到该页面。 – tambykojak 2014-04-27 09:02:03