javascript - Rails 验证页面的管理员身份——但允许 jquery 调用

标签 javascript jquery ruby-on-rails

我想向 LanguagesController 添加一个私有(private)方法:authenticate_admin

有没有办法让它只在页面本身上运行,但如果对该 Controller 进行 jQuery 调用,这是允许的?

现在我有

before_action :authenticate_admin


private
def authenticate_admin
      if current_user.role_id != 1
        redirect_to home_path
      end
end

但是注册和用户仪表板上有一个语言下拉列表。所以,在profile,js中有:

var getLanguages = $.get('/languages.json', function(languages){
        lang = languages
        var langConfirmSource = $('#language-confirmation-template').html();
        var langConfirmCompiled = Handlebars.compile(langConfirmSource);
        var langConfirmTemplate = langConfirmCompiled(languages)
        $('body').append(langConfirmTemplate)
     });

将其设置为仅在页面上保护管理员,但让 jQuery 在调用时执行它的操作的正确方法是什么?

最佳答案

我假设您有一个由 Rails 应用程序呈现的页面,并且该页面上有您的 JavaScript 代码。此页面已通过身份验证,并且您希望允许公开访问 ajax 请求。

如果这是正确的,您可能希望在收到特定请求时跳过身份验证。

因此,您可以创建一个新路由,映射到您的 Controller 方法并为该方法设置一个skip_authenticate_admin:

class LanguagesController < ApplicationController
  skip_before_action : authenticate_admin, only: [:languages_whatever]

   def languages_whatever
     render json: data
   end
end

有帮助吗?

关于javascript - Rails 验证页面的管理员身份——但允许 jquery 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39777588/

相关文章:

javascript - 如何在jquery中查找类(class)特定时间

php - 快速 Web 应用程序开发 ASP.net 与开源平台

ruby-on-rails - Rails 4 中的最佳日期验证?

javascript - 使用 PHP 和 JavaScript 从网络摄像头捕获图像并保存在文件夹中

javascript - libphonenumber(google 和 libphonenumber-js)库可以在中国使用吗?

jquery - 为每个 $.ajax() 单独使用 jQuery.ajaxSetup()

ruby-on-rails - 根据特定条件更改 Excel 单元格中的文本颜色 - Ruby on Rails

javascript递归函数返回初始值

javascript - MooTools 自定义拖动事件

javascript - jquery isotope 插件容器高度不会随着 isotope-item 增长(与 masonry 相同)