小编Kit*_*ten的帖子

在浏览器中生成客户端证书并在服务器上签名

是否可以在浏览器中请求生成客户端密钥对,并将公钥发送到服务器CA以进行透明签名?然后在用户的浏览器中安装签名证书?

场景:

  1. 用户打开https://examle.com/网页,验证服务器身份
  2. 用户请求创建帐户
  3. 密钥对在用户的浏览器中生成,不会泄露给服务器/ CA.
  4. 将Pubkey发送到服务器进行签名
  5. 服务器签名密钥并生成证书
  6. 证书将发送到客户端并与私钥一起安装在浏览器中

客户端下次连接到服务器时,将根据客户端证书验证其身份.

如果服务器可以使用密码加密强制/提示客户端保护其私钥,那将是很好的.

我已经看过使用java applet进行此任务的网上银行业务.是否可以使用本机浏览器功能来实现?Apache/PHP或Node.js解决方案将受到欢迎.

ssl client-side ssl-certificate

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

何时使用getter/setter以及何时安全地省略它们?

根据http://emberjs.com/guides/object-model/classes-and-instances/,需要使用getter和setter访问属性:

访问对象的属性时,请使用get和set访问器方法.

确保使用这些访问方法; 否则,计算属性不会重新计算,观察者不会触发,模板也不会更新.

我知道在更改属性时需要使用setter让Ember知道更改,以便更新绑定,但是读取属性呢?

来自http://emberjs.com/guides/object-model/classes-and-instances/的示例

App.Person = Ember.Object.extend({
  say: function(thing) {
    var name = this.get('name');
    alert(name + " says: " + thing);
  }
});

var yehuda = App.Person.create({
  name: "Yehuda Katz"
});

yehuda.say("Yes");
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,this.get('name')用于访问属性name,但是方法say被定义为类的属性,App.Person并且可以通过点表示法直接访问.虽然方法和属性之间存在明显的用法差异,但在JavaScript中,两者的实现没有区别.如果我替换this.get('name'),该示例仍然有效this.name.

  1. Ember在对象的方法和属性方面是否存在任何实现差异?
  2. 直接访问方法总是安全的吗?
  3. 是否必须始终通过getter访问包括计算属性在内的所有属性?如果没有,何时直接访问属性是安全的?

我绝对想坚持这里的最佳实践,每次都使用getter/setter,但我想了解Ember.js的内部:)

ember.js

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

使用相同的PHPUnit测试用例测试多个类

我有非常简单的PHP界面:

interface HasFormattableNumber {
    function setNumber();
    function setFormat();
    function formatNumber();
}
Run Code Online (Sandbox Code Playgroud)

接下来,我有许多实现此接口的类.不幸的是,这些类不能有一个共同的祖先(可能是一个只实现这些方法一次的抽象祖先).该课程基本上如下:

class A implements HasFormattableNumber {
    private $_number;
    private $_format;

    public function setNumber($n) {
        $this->_number = $n;
    }
    public function setFormat($f) {
        $this->_format = $f;
    }
    public function formatNumber() {
        return sprintf($this->_format, $this->_number);
    }
}
Run Code Online (Sandbox Code Playgroud)

单元测试看起来像这样:

class ATest extends \PHPUnit_Framework_TestCase {
    public function testShouldFormatNumber() {
        $a = new A();
        $a->setNumber(123);
        $a->setFormat("xx-%d");
        $this->assertEquals("xx-123", $a->formatNumber());
    }
}
Run Code Online (Sandbox Code Playgroud)

是否有可能以某种方式为所有接口实现重用此测试用例?我知道我可以将testShouldFormatNumber()复制并粘贴到我的所有单元测试中,但如果可能的话,我更喜欢将它保存在一个地方.

php Traits会以任何方式提供帮助吗?(但我还没有使用php 5.4)

php phpunit unit-testing

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