小编csd*_*rte的帖子

正确设置Laravel 5 CSRF令牌的标头

好吧,几个小时都在搜索这个,但是找不到解决方案的开头.

我正在使用带有laravel后端的angularJS前端.Restangular是我的通讯服务.

我的POST很好,因为我可以在数据中包含_token,它会起作用.

但是对于Restangular来调用destroy函数它看起来像......

Restangular.all('auth/logout').remove(); //maps to AuthController@Destroy
Run Code Online (Sandbox Code Playgroud)

一切都很好,但是你会得到一个TOKENMISMATCH例外,这是一个很好的安全问题

由于我找不到将_token包含在remove中的方法,因为它实际上是无体的,所以我决定将标记放在标题中.

RestangularProvider.setDefaultHeaders({'X-XSRF-TOKEN': CSRF_TOKEN}); //CSRF_TOKEN gathered elsewhere
Run Code Online (Sandbox Code Playgroud)

在Chrome dev tolos中,我可以看到标头设置为

X-XSRF-TOKEN:ClkQIRLpFQgMg8ZT6X5CF6doCplRfdJzW8msx2JI
Run Code Online (Sandbox Code Playgroud)

X-XSRF-TOKEN 正是 VerifyCrsfToken.php所寻求的.然而,它吐出了解密错误.任何其他令牌名称,例如XSRF-TOKEN,_TOKEN,CSRF_TOKEN都会吐出令牌不匹配.

由于最后一个事实,似乎标题被正确声明,但超出我的理解范围的东西导致Laravel无法解密.而且我非常关注解密功能,但不明白它为什么会失败......

谢谢您的帮助.

csrf laravel angularjs restangular

4
推荐指数
1
解决办法
1万
查看次数

在Ruby on Rails中@或不@

你为什么有时用@引用你的类属性,有时没有它?如果我要删除'@completed'并替换为'completed',则测试失败.但是在Project类中,tasks属性设置方式相同,但可以在没有@的情况下使用.

class Task
  attr_accessor :size, :completed

  def initialize(options = {})
    @completed = options[:completed]
    @size = options[:size]
  end

  def completed?
    @completed
  end

  def mark_completed
    @completed = true
  end
end


class Project
  attr_accessor :tasks

  def initialize
    @tasks = []
  end

  def done?
    tasks.reject(&:completed?).empty?
  end

  def total_size
    tasks.sum(&:size)
  end

  def remaining_size
    tasks.reject(&:completed?).sum(&:size)
  end
end


describe "estimates" do
    let (:project) { Project.new }
    let (:done) { Task.new(size: 2, completed: true) }
    let(:small_not_done) { Task.new(size: 1) }
    let(:large_none_done) { Task.new(size: 4) }

    before(:example) do
      project.tasks …
Run Code Online (Sandbox Code Playgroud)

ruby rspec ruby-on-rails

1
推荐指数
1
解决办法
62
查看次数

标签 统计

angularjs ×1

csrf ×1

laravel ×1

restangular ×1

rspec ×1

ruby ×1

ruby-on-rails ×1