【问题标题】:Rails Devise 401 from Safari Extension来自 Safari 扩展的 Rails 设计 401
【发布时间】:2012-12-07 16:54:03
【问题描述】:

我正在尝试向本地运行的 Rails 应用发出简单的 $.ajax 请求。

该请求在控制台没有任何问题,但是当我从 safari 扩展程序进行调用时,应用程序返回 401 Unauthorized。我不确定是否需要为每个用户创建一个 api 令牌并将其传递到 url 字符串中以进行身份​​验证,或者即使我已登录,devise 也没有处理请求是否有一个简单的原因。我的猜测是罪魁祸首是我在控制器上的前置过滤器,它看起来像这样:

before_filter: authenticate_user!

但是,当我登录应用程序时,我再次收到 401。仅供参考,这是我通过扩展程序拨打的电话:

$.ajax({                                                                                                                                                                                                        
                type: 'GET',                                                                                                                                                                                                 
                url: 'http://localhost:3000/playlists.json?callback=?,                                                                                                                                              
                dataType: 'jsonp',                                                                                                                                                                                                
                success: function(data) { console.log(data); },                                                                                                                                                                                       
                error: function() { console.log('Uh Oh!'); },
                jsonp: 'jsonp', 
                crossdomain: true                                                                                                                                               
            });

任何帮助将不胜感激。

【问题讨论】:

    标签: ruby-on-rails ruby ajax safari-extension


    【解决方案1】:

    好的,想通了。正在设置的 cookie 设置为在“会话”之后过期,这基本上意味着一旦您离开页面,会话就不再存在。因此,扩展程序无权访问此扩展程序 cookie。关键是在会话 cookie 上默认设置过期日期,您可以在 config/initializers/session_store.rb 中这样做:

     YourApp::Application.config.session_store :cookie_store, { 
        :key => '_yourapp_session',
        :expire_after => 60*24*60*60
    }
    

    您可以在此处阅读有关 cookie 类型的更多信息:http://en.wikipedia.org/wiki/HTTP_cookie#Session_cookie

    【讨论】:

      猜你喜欢
      • 2013-03-17
      • 1970-01-01
      • 1970-01-01
      • 2011-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多