小编Wai*_*...的帖子

JSON Web令牌(JWT)优于数据库会话令牌

使用数据库会话令牌系统,我可以使用用户名/密码进行用户登录,服务器可以生成令牌(例如uuid)并将其存储在数据库中并将该令牌返回给客户端.来自其上的每个请求都将包括令牌,并且服务器将查询令牌是否有效以及它属于哪个用户.

使用JWT,由于保留在服务器上的密钥和客户端保留并随每个请求发送的签名令牌的组合,因此无需为会话/令牌保存任何数据库.

这很好,但除了保存数据库检查每个请求(因为它只是检查哈希表,这将是快速的),我不清楚使用JWT的优点是什么.你能熟悉这个解释吗?让我们忽略cookie,它特别是如上所述的数据库自定义令牌和JWT,我试图比较和理解它的好处.

access-token jwt express-jwt json-web-token

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

PHP cli微框架?

我想在PHP中编写一个小的CLI脚本,基本上有两个可能的参数来做两个不同的事情.很容易.但我想以优雅的方式做.

我想知道它是否在CLI模式下存在一些PHP微框架功能(注意我说微框架而不是框架).我想使用PHP,因为我将包含一些PHP已编程的类.

我找到了CLImax,这是一个特定的CLI微框架,看起来不错,但缺乏一个好的文档.

你知道我能找到一个好的CLImax文档的任何地方(我没有找到任何东西,但它的源代码记录不清楚)?

或许你知道另一种选择吗?Alloy似乎也是一个轻量级的PHP框架,并且具有CLI"模式",但我不知道它是否过于通用,因为它也适用于Web服务器.你用过吗?

php frameworks command-line-interface

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

只加载该页面中使用的@ font-face

我的样式表中有多个@ font-face字体,有没有办法只加载那个页面上使用的字体?除了为每个具有该字体的页面加载单独的样式表.

html css css3 font-face

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

用于获取二维数组的递归迭代器的iterator_to_array类型

当在PHP中使用迭代器时,你可以使用iterator_to_array函数来提取迭代产生的数组.例如,假设您有以下内容ArrayObject:

$array_object = new ArrayObject(array(
   array('1', '2', '3', '4'),
   array('5', '6', '7', '8'),
   array('9', '10', '11', '12'),
));
Run Code Online (Sandbox Code Playgroud)

如您所见,它的存储是一个二维数组.

我们可以创建一个FilterOperator只接受它的第一个项目(我知道它会更好LimitIterator,它只是作为一个示例目的):

class myFilterIterator extends FilterIterator
{
   public function accept()
   {
      return ($this->key() === 0);
   }
}

$filter_iterator = new myFilterIterator(new ArrayIterator($array_object));
Run Code Online (Sandbox Code Playgroud)

现在,如果我这样做:

print_r(iterator_to_array($filter_iterator));
Run Code Online (Sandbox Code Playgroud)

如果我手动循环运算符,我得到的数组:

Array ( [0] => Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 ) )
Run Code Online (Sandbox Code Playgroud)

但是现在如果我想和一个人一起工作RecursiveFilterIterator呢?比方说我有:

class myRecursiveFilterIterator extends RecursiveFilterIterator
{
   public …
Run Code Online (Sandbox Code Playgroud)

php oop spl iterator

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

Rails 4.2涉及测试环境中忽略的内容

我陷入了一个非常奇怪的问题.我最近从rails 4.1更新到4.2.在4.1中一切正常.但是现在,在4.2中,即使发现问题,似乎模型关注内容也会被忽略.

说得简单.我有一个Client模型属于Address一个Addressable关注中定义的关系:

应用程序/模型/ client.rb

class Client < ActiveRecord::Base
  include Addressable
end
Run Code Online (Sandbox Code Playgroud)

应用程序/模型/ address.rb

class Address < ActiveRecord::Base
end
Run Code Online (Sandbox Code Playgroud)

应用程序/模型/关注/ addressable.rb

module Addressable
  extend ActiveSupport::Concern

  included do
    belongs_to :address
  end
Run Code Online (Sandbox Code Playgroud)

development环境没问题.我可以Client.new.address没有问题.但在test环境中,同一行给了我一个unknow method address错误.如果我移动belongs_to :addressClient那么它再次起作用.该模块正在被包含,因为没有关于此的错误,如果我将名称更改为Adressabledewdewded当时,则会出现错误.

验证方法等也是如此.

我一直在调试这个,但我找不到根.我已复制我的development.rbas test.rb并重新启动服务器但仍然.我无法在新的Rails 4.2应用程序中重现这一点,因此它必须与我的应用程序或更新过程有关,但不知道在哪里.

有人有线索吗?

谢谢

UPDATE

这是Client.new.address在测试环境中在控制台中执行的堆栈跟踪(在开发中它可以工作):

NoMethodError: undefined method `address' for #<Client:0xbc89dac0>
    from /home/marc/.gem/ruby/2.1.3/gems/activemodel-4.2.0/lib/active_model/attribute_methods.rb:433:in `method_missing'
    from (irb):3
    from /home/marc/.gem/ruby/2.1.3/gems/railties-4.2.0/lib/rails/commands/console.rb:110:in `start' …
Run Code Online (Sandbox Code Playgroud)

activerecord ruby-on-rails activesupport-concern ruby-on-rails-4.2

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

Codeship用指南针运行咕噜声

我正在尝试与codeship建立持续集成.我们的项目是带有角度应用程序的Rails API,目前,它位于public目录中.为了工作,grunt需要找到罗盘可执行文件.

我会说setup命令应该是:

rvm use 2.1.3 --install
bundle install
export RAILS_ENV=test
bundle exec rake db:schema:load
bundle exec rake db:migrate
bundle exec rake db:test:prepare
# We need compass in frontend
gem install compass
nvm install 0.10.25
nvm use 0.10.25
npm install
npm install -g grunt-cli
Run Code Online (Sandbox Code Playgroud)

并测试管道:

bundle exec rspec
cd public && grunt test
Run Code Online (Sandbox Code Playgroud)

然而,似乎代码gem install compass行不喜欢行,它抱怨:

Running "concurrent:test" (concurrent) task Warning: /home/rof/.rvm/gems/ruby-2.1.3/gems/bundler-1.9.4/lib/bundler/spec_set.rb:92:in `block in materialize': Could not find rake-10.4.2 in any of the sources

(Bundler::GemNotFound) from …
Run Code Online (Sandbox Code Playgroud)

gruntjs codeship compass

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

禁用SonataUserBundle sonata.user.admin.group服务

我正在使用SonataAdminBundle和SonataUserBundle.

SonataUserBundle注册SonataAdminBundle sonata.user.admin.group自动检测的服务,以设置管理仪表板中的链接以对CRUD操作进行分组.

我怎么禁用sonata.user.admin.group?我一直在Symfony2文档中遵循这些配方:

到目前为止,我在bundle定义中有以下代码来添加编译器传递:

public function build(ContainerBuilder $container)
{
  parent::build($container);

  $container->addCompilerPass(new CompilerPass());
}
Run Code Online (Sandbox Code Playgroud)

这里是编译器传递:

<?php

namespace NS\Service\CompilerPass;

use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
use Symfony\Component\DependencyInjection\ContainerBuilder;

class CompilerPass implements CompilerPassInterface
{
    public function process(ContainerBuilder $container)
    {
       $container->removeDefinition('sonata.user.admin.group');
    }
}
Run Code Online (Sandbox Code Playgroud)

我认为这应该有效但不行.Symfony正在抛出异常,告诉我sonata.user.admin.group服务不存在.但它存在,如果我这样做$container->getDefinition('sonata.user.admin.group'),实际的定义是返回.

谢谢

php dependency-injection symfony fosuserbundle sonata-admin

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

如何以非扩展依赖方式禁用htaccess中的cgi?

我想在我的文档根目录下面的目录中禁用任何类型的CGI执行.任何一种:php,perl,ruby ......无论如何.我想以一种不依赖文件扩展名的方式来做这件事.在我的文档根目录下面,因为用户必须能够放置和查看HTML文件.

它必须在htaccess中,因为它是一个共享主机.

单独使用-ExecCGI不起作用.我必须向该行添加一个与扩展相关的AddHandler指令.

在本主题中找到了一些接近的答案,但它们依赖于扩展,依赖于php或全局apache配置.

它可能做我想要的吗?

非常感谢你,

apache .htaccess cgi

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

如何在div中使多个跨距等宽

说我有以下内容:

<div style="border: 1px solid black; width:300px;">
<span style="background: red; width:100px;">one</span>
<span style="background: yellow; width:100px;">two</span>
<span style="background: red; width:100px;">three</span>
</div>
Run Code Online (Sandbox Code Playgroud)

我可以应用什么CSS来使div在div中间隔相等?

html css

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

从Web浏览器运行Symfony2控制台命令

我必须使用糟糕的生产服务器.我可以通过apache使用Symfony2所需的PHP版本,但不能使用较旧的PHP版本的CLI.

所以我的问题是......有什么办法可以从网络浏览器运行控制台命令吗?因此,将console文件移动到服务器根目录并进行一些更改......稍后,出于安全原因,此文件将存储在根目录之外.

symfony

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

将A替换为B,将B替换为A.

有没有使用的方式preg_replace来代替AB是否A存在,或者B对于A是否B存在?

就像是:

preg_replace('/ORDER BY field (ASC|DESC)/', 'ORDER BY field (***the alternative not matched***)');
Run Code Online (Sandbox Code Playgroud)

把任何ORDER BY field ASC变成ORDER BY field DESC,ORDER BY field DESC变成任何变成ORDER BY field ASC.

php regex preg-replace

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

使用destruct代替反转

我理解使用这种inversion策略的防爆原理:

Theorem ex_falso_quodlibet : forall (P:Prop),
  False -> P.
Proof.
  intros P contra.
  inversion contra.  Qed.
Run Code Online (Sandbox Code Playgroud)

但是,我不明白Coq为了做同样的证明所采取的步骤,而是使用destruct而不是inversion:

Theorem ex_falso_quodlibet' : forall (P:Prop),
  False -> P.
Proof.
  intros P contra.
  destruct contra.  Qed.
Run Code Online (Sandbox Code Playgroud)

False归纳如何被破坏?它如何影响目标并完成证明?

proof theorem-proving coq coq-tactic

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