栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Rails,Devise身份验证,CSRF问题

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Rails,Devise身份验证,CSRF问题

Jimbo做得很出色,解释了您遇到的问题背后的“原因”。您可以采用两种方法来解决此问题:

  1. (如Jimbo的建议)重写Devise :: SessionsController以返回新的csrf令牌:
        class SessionsController < Devise::SessionsController      def destroy # Assumes only JSON requests        signed_out = (Devise.sign_out_all_scopes ? sign_out : sign_out(resource_name))        render :json => { 'csrfParam' => request_forgery_protection_token, 'csrfToken' => form_authenticity_token        }      end    end

并在客户端为您的sign_out请求创建成功处理程序(可能需要根据您的设置进行一些调整,例如GET vs DELETE):

        signOut: function() {      var params = {        dataType: "json",        type: "GET",        url: this.urlRoot + "/sign_out.json"      };      var self = this;      return $.ajax(params).done(function(data) {        self.set("csrf-token", data.csrfToken);        self.unset("user");      });    }

这还假定您将在所有AJAX请求中自动包含CSRF令牌,如下所示:

        $(document).ajaxSend(function (e, xhr, options) {      xhr.setRequestHeader("X-CSRF-Token", MyApp.session.get("csrf-token"));    });
  1. 更简单地说,如果适合您的应用程序,则可以简单地覆盖
    Devise::SessionsController
    和,并使用覆盖令牌检查
    skip_before_filter :verify_authenticity_token


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/369020.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号