另外给楼主一个另外提示,如何在相应页面也可以 include 该只有该页面自己所需的 js
如果是 Backbone 的话,建议使用 backbone marionette 的 Module 来组织代码
比如我的 upload.erb 需要用到 jcrop 和 backbone 的 User.Show Module 那可以在页面的末尾加入下面的代码
<% content_for :page_javascript do %>
<%= javascript_include_tag "jquery.jcrop" %>
<%= javascript_include_tag "users.show" %>
<% end %>
在 layout 中加入
<%= yield :page_javascript %>
非常赞,顶一个!寓教学于玩乐,看的刺激又学到不少干货.
@hooopo
JWT 给我的感觉是一种一定程度上能替代 https 来进行安全通讯的方案,好像和我的问题关系不太大。
不过 mark 一下,以后可能碰到需要用到的应用场景
研究一下,JWT 对于移动端来说,是相对于 cookie 而言很不错的选择,唯一缺陷可能在于没有内置机制去使单个 token 失效(stackoverflow 上有不少好建议,可参考最下面的链接)
http://angular-tips.com/blog/2014/05/json-web-tokens-introduction/ https://auth0.com/blog/2014/01/07/angularjs-authentication-with-cookies-vs-token/
这个介绍怎样在 rails4 中整合 devise 和 jwt https://github.com/jimjeffers/rails-devise-cors-jwt-example/tree/master/app
关于 invalidate token JWT 的建议 http://stackoverflow.com/a/23089839/4412256
#2 楼 @hz_qiuyuanxin 就是选择困难症
哦对了,补充一点,我们的应用是有点类似 微博,知乎这样的社区型应用
经检查,这种初始化是正确的
输出时需要用 send_data image.to_blob, :type => 'image/png', :disposition => 'inline'
JSON POST 方式,device 已经默认支持, example:
#29 楼 @ChrisLoong 我们团队也在做一个新项目,个人很喜欢 NG,只是考虑到 IE8 还有 30% 的占有率,就不敢不做支持了,暂时考虑的是 requirejs + jq + handlebars
前台用的是 NG,是最新的版本吗,我比较想知道 NG 在 IE8 的兼容情况如何?
感谢 @lyfi2003 和@jyootai 大大的无私帮助,这里贴上 本人暂时可用的 Ajax log_in log_out 代码抛砖引玉
这里还有一个问题,现在是可以响应 form post 了,
但是我想 post 的是 JSON 格式(虽然 form post 也可以用,只是处女座完美主义求大大轻喷),但无论我是 用 email,:email,还是用~ ~
~~user[:email] 来做 JSON 对象的 key,device 都识别不了
class Users::SessionsController < Devise::SessionsController
# POST /resource/sign_in
def create
respond_to do |format|
format.html{ super }
format.json do
resource = warden.authenticate!(:scope => resource_name, :recall => "#{controller_path}#failure")
return sign_in_and_redirect(resource_name, resource)
end
end
end
# DELETE /resource/sign_out
def destroy
respond_to do |format|
format.html{ super }
format.json do
redirect_path = after_sign_out_path_for(resource_name)
signed_out = (Devise.sign_out_all_scopes ? sign_out : sign_out(resource_name))
code = signed_out ? "S_OK" : "FA_UNKNOWN_ERROR";
render :json => {:code => code, :redirect => redirect_path}
end
end
end
def sign_in_and_redirect(resource_or_scope, resource=nil)
scope = Devise::Mapping.find_scope!(resource_or_scope)
resource ||= resource_or_scope
sign_in(scope, resource) unless warden.user(scope) == resource
respond_to do |format|
format.json {render :json => {:code => "S_OK", :redirect => stored_location_for(scope) || after_sign_in_path_for(resource)}}
format.html {redirect_to root_url}
end
end
def failure
user = User.find_by_email(params[:user][:email])
code = nil
if user != nil
user.valid_password?(params[:user][:password]) ? code : code = "FA_PASSWORD_ERROR"
else
code = "FA_USAR_NOT_EXIT"
end
respond_to do |format|
format.json {render :json => {:code => code}}
end
end
end
谢谢,@lyfi2003 这个思路应该可以做好注册的 JSON 返回,但我更想知道怎么扩展 用户 log_in/log_out 的 Devise::SessionController 的行为,比如我自己如果写了一个 SessionsController < Devise::SessionsController 那我怎样构造请求去访问自己的 SessionsController,而不是访问默认的