小编anu*_*shr的帖子

使用一个登录表单验证多个symfony2防火墙

我有两个防火墙:

  1. api (用于API调用)
  2. main (其他一切)

我的客户端应用程序登录通过main防火墙进行 但是,它确实与api防火墙下的端点交互以获取数据.这里的问题是我不想强迫用户第二次登录以对第二个防火墙进行身份验证.

如何只使用一个登录表单对两个防火墙进行身份验证?

firewall symfony symfony-security

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

在Symfony2中配置Assetic的输出目录

我想全局配置assetic转储我的JS文件的输出目录.目前,他们总是去web/js/*.我想改成这个web/js/compiled/*.

可以在每个文件级别指定:http://symfony.com/doc/2.0/cookbook/assetic/asset_management.html#dumping-asset-files

似乎找不到在我的Symfony应用程序中全局设置此方法的方法.我缺少任何配置参数?

UPDATE

找到一个名为的资产配置参数write_to.设置此选项config.yml会导致命令行将assetic:dump文件转储到新目录,但在twig文件中,asset_urlvar仍然指向原始路径.

symfony assetic

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

仅在kernel.terminate事件之后返回响应

我的理解kernel.terminate是它响应返回给客户端触发.

在我的测试中,看起来并非如此.如果我sleep(10)在kernel.terminate中调用了一个函数.浏览器也等待10秒钟.处理似乎在发送响应之前发生.

我在配置中有以下内容:

calendar:
    class: Acme\CalendarBundle\Service\CalendarService
    arguments: [ @odm.document_manager, @logger, @security.context, @event_dispatcher ]
    tags:
        - { name: kernel.event_subscriber }
Run Code Online (Sandbox Code Playgroud)

我的订阅者类:

class CalendarService implements EventSubscriberInterface
{
    public static function getSubscribedEvents()
    {
        return array(
            'kernel.terminate' => 'onKernelTerminate'
        );
    }

    public function onKernelTerminate()
    {
        sleep(10);
        echo "hello";
    }
}
Run Code Online (Sandbox Code Playgroud)

UPDATE

这似乎与Symfony没有发送Content-Length标题有关.如果我生成它,响应将正确返回.

// app_dev.php
...
$kernel = new AppKernel('dev', true);
$kernel->loadClassCache();
$request = Request::createFromGlobals();
$response = $kernel->handle($request);

// --- START EDITS ---
$size = …
Run Code Online (Sandbox Code Playgroud)

fastcgi nginx symfony

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

cwRsync在Windows 7上忽略"nontsec"

我使用cwRsync将一些文件从Windows同步到Ubuntu.这个过程曾经在Vista上运行良好,但自从我升级到Windows7后,我不断遇到权限问题.

一些背景...我确实用过在Vista上获得相同的权限问题,但是通过使用CYGWIN=nontsec环境变量解决了这个问题.

预备问题

rsync: failed to modify permissions on xxx: Permission denied (13)
Run Code Online (Sandbox Code Playgroud)

由于Windows和UNIX文件权限不同,因此使用Windows权限同步文件没有意义.rsync的作用是将UNIX端的权限设置为0(d---------).为了防止这种情况,cygwin有一个nontsec变量,指示它忽略Windows文件的权限.

问题是,在Windows7上,nontsec似乎没有任何影响.

permissions cwrsync windows-7

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

Chrome正在缓存HTTP PUT请求

我对Chrome有这个奇怪的问题.它经常出现缓存PUT请求.

详细信息:我有一个使用backbone.js的应用程序,当尝试将某些更改保留到模型时(主干自动生成PUT请求),Chrome只是不会将该请求发送到服务器.它在Firefox和IE中运行得非常好(到目前为止还没有在Safari中看到过这个问题).

以下是Chrome开发者工具"网络"标签的屏幕截图.如您所见,PUT请求的响应是从缓存返回的(请求没有到达服务器!!) Chrome缓存PUT请求

这是同一请求的标题详细信息的屏幕截图.再一次,很明显Chrome并不打算将PUT请求发送到服务器. Chrome缓存了PUT请求标头

请求的有效负载是JSON数据.有关为什么会发生这种情况的想法/我做错了什么?

更新: Chromium已经确认这确实是一个错误(感谢JanHančič).

临时解决方案 我最终覆盖了Backbone.sync方法并将时间戳附加到PUT,POST和DELETE请求的查询字符串,以便它们始终是唯一的:

if(!options.data && model && (method == 'create' || method == 'update' || method == 'delete')) {
    params.url += (params.url.indexOf('?') == -1 ? '?' : '&') + '_=' + new Date().getTime();
}
Run Code Online (Sandbox Code Playgroud)

javascript jquery google-chrome backbone.js

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

REST API的干运行策略

我正在寻找REST API"干运行"操作的一些最佳实践.

假设我有一个端点,将资金从账户A转移到账户B.我可以像这样开始转账:

POST /transactions
{
  "amount": 1000,     // how much to transfer
  "source": "A",      // account to transfer from
  "destination": "B"  // account to transfer to
}
Run Code Online (Sandbox Code Playgroud)

此操作会创建一个"事务",因此响应将是一个事务对象,其有效负载包含:

{
  "id": "txn-123",
  "amount": 1000,
  "source": "A",
  "destination": "B",
  "fees": 10,          // any fees that were charged
  "balance": 2500      // balance in source account AFTER transfer
}
Run Code Online (Sandbox Code Playgroud)

我希望能够在几个原因下进行干跑:

  1. 如果转移成功,则确定转移(例如,如果账户A中的余额较低,则可能会失败)
  2. 确定预先适用的费用

那么,"干跑"概念的最佳实践是什么?我可以想到几个选择:

  1. 将标志传递给现有传输端点以指示干运行选项.标志可以是查询字符串,有效载荷的一部分,标题等.确切的实现有争议,但从概念上讲我喜欢这个,因为它提供了一个干净的界面,让您知道从单个执行传输所需要知道的所有内容端点.
  2. 专用端点专门用于执行转移干运行.这种"感觉"更安全,因为您不会无意中执行破坏性操作,因为实时和干运行端点是完全分离的.另一方面,如果您有权访问生产系统,您真的应该知道自己在做什么,所以我不是一个忠实粉丝.
  3. 没有干运行的概念.只需拥有一组完全不同的端点来计算费用,或获得平衡,或任何其他可帮助您推断转移结果的操作.我不喜欢这样,因为你强迫客户端复制已经包含在传输端点中的所有逻辑.

这些是我对此事的看法,但我喜欢听别人的想法.

rest

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

jQuery Tmpl中的计数器增量不一致

我试图在我的jQuery tmpl中运行一个计数器,以便可以执行一些后模板逻辑。问题是由于某种原因,我无法使计数器增加1。它似乎总是以某个随机数增加。

这是我的HTML:

<div id='myDiv'></div>
<script id='tpl'>
    ${i=0} 
    ${i++}
    ${i++}
    ${i++}
    ${i++}
</script>
Run Code Online (Sandbox Code Playgroud)

...这就是我调用模板引擎的方式:

$.tmpl($('#tpl'), {}).appendTo("#myDiv");
Run Code Online (Sandbox Code Playgroud)

我也将其放在jsfiddle上:http : //jsfiddle.net/2ZtRL/1/

我期望的输出是:0 1 2 3 4相反,我得到0 3 7 11 15

完全奇怪!救命!

variables jquery jquery-templates

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

JS浮点导致不正确的舍入

我有可能是一个边缘案例场景.当试图将值舍入4.015到2位小数时,我总是最终得到4.01而不是预期的4.02.对于具有.015小数部分的所有数字,这种情况始终如一.

我在JS中使用了一个相当常见的方法:

val = Math.round(val * 100) / 100;
Run Code Online (Sandbox Code Playgroud)

我认为问题在乘以100时开始.浮点不准确导致该值向下舍入而不是向上.

var a = 4.015,                // 4.015
    mult = a * 100,           // 401.49999999999994 (the issue)
    round = Math.round(mult), // 401
    result = round / 100;     // 4.01 (expected 4.02)
Run Code Online (Sandbox Code Playgroud)

小提琴:http://jsfiddle.net/eVXRL/

如果我尝试回合,这个问题就不会发生4.025.期望值4.03确实回归; 它只是一个问题.015(到目前为止).

有没有办法优雅地解决这个问题?当然只有.015一次性寻找和处理这种情况的黑客,但这似乎是错误的!

javascript math

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