小编ahe*_*rve的帖子

rails/devise如何处理cookie会话?

我想了解使用rails/devise登录用户时的实际情况.

我创建了一个最小的rails应用程序,安装了devise并创建了一个User设计模型.一切正常,当我登录(使用remember me)时,我得到一个会话cookie就像预期的那样.

现在让我烦恼的是:rails如何处理浏览器通过cookie传递的会话信息?

我天真地期望一些信息存储在数据库中,但我看不到哪里.没有session表,没有会话列Users,我找不到任何感兴趣的tmp目录.

请注意,重新启动服务器不会终止我的会话.这当然是预期的,但现在我真的想知道这里发生了什么样的魔术?

换句话说:服务器如何检查cookie的有效性以验证用户?

谢谢 !

authentication ruby-on-rails devise

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

是否可以从数组创建打字稿类型?

我经常使用诸如

export type Stuff = 'something' | 'else'
export const AVAILABLE_STUFF: Stuff[] = ['something', 'else']
Run Code Online (Sandbox Code Playgroud)

这样我既可以使用 type Stuff,也可以根据需要迭代所有可用的东西。

这有效,但感觉像是重复了两次信息。而且您必须小心,因为更新StuffAVAILABLE_STUFF还需要更新其对应项。

有没有更好的方法来定义数组的类型,或者甚至在某种程度上使用数组来键入一些数据?

typescript typescript-typings

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

告诉typescript编译json文件

使用时导入json文件时,typescript编译器工作正常

const tasks = require('./tasks.json')
Run Code Online (Sandbox Code Playgroud)

但是,当我运行时tsc,输出目录不包含任何tasks.json文件,从而导致运行时错误.

有没有办法告诉编译器应该复制所有json文件,还是应该手动将所有json文件复制/粘贴到dist目录中?

我的tsc compilerOptions目前正在读取

  "compilerOptions": {
    "target": "es6",
    "module": "commonjs",
    "sourceMap": true,
    "noImplicitAny": true,
    "removeComments": false,
    "outDir": "./dist/",
    "sourceMap": true,
    "pretty": true,
    "noImplicitThis": true,
    "strictNullChecks": true,
    "sourceMap": true
  },
Run Code Online (Sandbox Code Playgroud)

谢谢 !

json typescript

11
推荐指数
3
解决办法
7780
查看次数

如何为deb包创建手动输入

创建deb包时,我在哪里编写手册?是否有任何格式规则/最佳实践要尊重?

我对deb包的创建很新.在一些教程之后,我刚刚创建了一个安装/执行良好的软件包,所以现在我想编写一些文档,以便man myFancyPackage返回一些内容,而不是myFancyPackage的手动输入.

不幸的是,我找到的所有教程都没有谈到手动创建.

linux ubuntu debian manpage deb

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

打字稿:如何从javascript文件导入一个类?

我想要 :

  • 导入定义类的js文件: ./myClass/index.js
  • 声明MyClass某处的公共方法(在index.ts或指定的声明文件中,我真的不知道怎么做)
  • 有一个暴露类的打字稿文件: index.ts

就像是

// index.ts
import MyClass from './myClass' // or require, or anything that would work
export {MyClass}
Run Code Online (Sandbox Code Playgroud)

// myClass/index.js
export default class MyClass {
  ...
}
Run Code Online (Sandbox Code Playgroud)

这显然不起作用,因为导入./myClass/index将找不到模块.

问题是,我试图./myClass/index.d.ts基于这个例子创建一个文件,但无论如何,我仍然有一个错误:在运行时找不到模块'./myClass/index.js'错误:(

我觉得我在这里错过了一些打字稿基础,但我正在努力寻找一些明确的资源.

有任何想法吗 ?

javascript typescript typescript-typings typescript2.0

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

如何为 ts-loader 指定打字稿版本?

我正在安装ts-loader以使用 webpack。

有人知道如何选择要使用的打字稿版本吗?

不管我做什么,我总是收到一条消息说

ts-loader: Using typescript@1.8.10 and /app/tsconfig.json
Run Code Online (Sandbox Code Playgroud)

我打算使用 typescript@2 但我不知道如何告诉 ts-loader 使用正确的版本......

谢谢

typescript webpack ts-loader

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

algolia最佳实践:新索引或标签?

我在我的网页上成功设置了一个algolia搜索引擎.我的后端将公共数据同步到algolia,搜索栏工作得很好.

现在我想为我的管理应用程序设置相同的内容.与公共应用程序不同,此应用程序应该能够从algolia恢复秘密数据.

到目前为止,我可以考虑两种方法:

  1. 对于每个文档,存储"公共"版本(带有"公共"标记)和管理版本(标记为"admin",以及其他字段).然后,自定义API密钥可以确保每个应用程序都可以访问正确的数据.

要么

  1. 创建一个新索引,也许my_admin_collection_index,复制设置,并像my_collection_index管理应用程序一样使用它.

所以在第一个版本中我搜索相同的索引,但是使用不同的标签; 在第二个版本中,我搜索两个不同的索引.

是否有一些关于如何在两种方法之间做出选择的见解?我会说我会更容易复制文档并在其上添加一些标签,但我无法真正说明这种方法对性能的影响.

谢谢 !

algolia

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

如何使用 nodemailer SES 传输正确限制消息发送?

nodemailer 文档说:

如果您使用速率或连接限制,那么您还可以使用辅助方法来检测发送队列是否已满。这将有助于避免缓冲过多的消息。

它还提供了一个示例:

let transporter = nodemailer.createTransport({
    SES: new aws.SES({
        apiVersion: '2010-12-01'
    }),
    sendingRate: 1 // max 1 messages/second
});

// Push next messages to Nodemailer
transporter.on('idle', () => {
    while (transporter.isIdle()) {
        transporter.sendMail(...);
    }
});
Run Code Online (Sandbox Code Playgroud)

不幸的是,这对我来说相当神秘。难道sendingRate: 1只是提供了一个帮手,还是它处理的限制?

此外,这段代码在我看来就像sendMail(...)执行后会无限循环。我在这里错过了什么吗?

是否有关于如何使用此功能的示例或建议?

非常感谢 !

amazon-web-services node.js amazon-ses nodemailer

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

用葡萄实体将参数传递给模型方法

如何使用葡萄实体将参数传递给模型方法?

我想在显示项目时检查current_user是否喜欢某个项目,所以我构建了一个模型user_likes?方法:

class Item
  include Mongoid::Document
  #some attributes here...
  has_and_belongs_to_many :likers

  def user_likes?(user)
    likers.include?(user)
  end
end
Run Code Online (Sandbox Code Playgroud)

但我不知道如何将current_user发送到葡萄实体模型:

module FancyApp
  module Entities
    class Item < Grape::Entity
      expose :name #easy
      expose :user_likes # <= How can I send an argument to this guy ?
    end 
  end
end
Run Code Online (Sandbox Code Playgroud)

在葡萄api:

get :id do
  item = Item.find(.....)
  present item, with: FancyApp::Entities::Item # I should probably send current_user here, but how ?
end
Run Code Online (Sandbox Code Playgroud)

我觉得current_user可能应该从最后一段代码发送,但我无法想象如何做到:(

有什么想法吗 ?谢谢 !

ruby-on-rails ruby-grape devise grape-api

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

为什么有两个不同的 AWS 密钥?

我一直想知道:为什么 AWS 提供 ACCESS_KEY_ID 和 AWS_SECRET_KEY ?

我永远看不到任何用例,我们可以在没有另一个密钥的情况下使用一个密钥,那么为什么要将它们分开,而不是将它们合并为一个唯一的密钥?

security amazon-web-services amazon-iam

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

neo4j cypher:无法创建和使用索引

我想在neo4j 2.0上创建一些索引,但我无法理解这里有什么问题.从一个新的数据库开始,我的输入命令看起来像

CREATE INDEX ON :user(name);
CREATE INDEX ON :root(root);
CREATE INDEX ON :origin(origin);
CREATE INDEX ON :gender(gender);
create (n1:root {root : 'root'}),(n2:gender {gender : 'female'}),(n3:gender {gender : 'male'}),(n4:origin {origin : 'english (modern)' }),(n5:origin {origin : 'finnish' }),(n6:user {name : 'aaliyah'}),(n7:user {name : 'aapeli'}),(n8:user {name : 'aapo'});
Run Code Online (Sandbox Code Playgroud)

此时一切看起来都很好(请参阅下面的输出)但是当我尝试使用索引时出现错误:

neo4j-sh (0)$ start n=node:user(name="aapo") return n;
MissingIndexException: Index `user` does not exist
Run Code Online (Sandbox Code Playgroud)

知道为什么会这样吗?请注意,在索引之前创建节点不会更改任何内容.

提前致谢

输出我的第一个命令:

neo4j-sh (0)$ CREATE INDEX ON :user(name);
+-------------------+
| No data returned. |
+-------------------+
Indexes added: 1
235 …
Run Code Online (Sandbox Code Playgroud)

indexing neo4j cypher

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

使用泛型类型检查promise时,typescript的奇怪行为

我试图让编译器检查一个承诺的类型,但我得到一个奇怪的行为.以下是return我尝试的4种不同选项:

interface MyResponse<T> {
  foo: number,
  data: T,
}

const g: () => Promise<MyResponse<number>> = async () => {

  // This behavior is fine, the compiler complains, as expected:
  // ERROR: Type 'string' is not assignable to type 'number'.
  return {
    foo: 1,
    data: 'wrong type'
  }

  // Both foo and data are missing, but I get no error. I don't get why
  return {}

  // data is missing, but still no error
  return {
    foo: 1
  } …
Run Code Online (Sandbox Code Playgroud)

promise typescript

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