小编HHK*_*HHK的帖子

如何从打字稿中的类中创建不包括实例方法的类型?

给定一个包含属性和方法的类,我想派生一个只包含其属性的类型。

例如,如果我定义一个类如下:

class MyObject {

  constructor(public prop1: string, public prop2: number) {}

  instanceMethod() { ... }
}
Run Code Online (Sandbox Code Playgroud)

我想要一个类型,MyObjectConstructor比如这样:

type MyObjectConstructor = {
  prop1: string;
  prop2: number;
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用内置类型Pick并按名称手动选择我想要的键,但我不想重复所有键,并且每次向我的类添加新属性时都必须更改它们。

有没有办法定义ConstructorType<T>只返回 typescript 中类的属性的泛型类型?

typescript typescript-generics

16
推荐指数
3
解决办法
5366
查看次数

覆盖控制器中的protect_from_forgery策略

我想用两种不同的protect_from_forgery策略构建一个rails应用程序:一个用于Web应用程序,另一个用于API.

在我的应用程序控制器中,我有这行代码:protect_from_forgery with: :exception为了防止CSRF攻击,它可以正常工作.

在我的API命名空间中,我创建了一个从我的应用程序控制器继承的api_controller,它是API命名空间中所有其他控制器的父类,我更改了上面的代码: protect_from_forgery with: :null_session.

遗憾的是,我在尝试发出POST请求时出错:"无法验证CSRF令牌真实性".

我不想跳过API控制器中的verify_authenticity_token方法,我只想在我的应用程序中有两个不同的策略,那么如何覆盖应用程序控制器中定义的protect_from_forgery策略?

编辑:好的,所以我最终做了我最初不想做的事情:改变我的api_controller的继承:它现在继承自ActionController :: Base,而不再是我的应用程序控制器.它现在可以工作但是:

  1. 它没有回答我的问题,即覆盖protect_from_forgery策略.
  2. 它不是DRY,因为我必须复制/覆盖我之前在application_controller中的内容.

因此,如果有人有真正的方法来覆盖这种方法,我会很感激.

ruby overriding ruby-on-rails csrf

5
推荐指数
2
解决办法
3074
查看次数