Koa.js - Cookies

Cookies são arquivos / dados simples e pequenos que são enviados ao cliente com uma solicitação do servidor e armazenados no lado do cliente. Cada vez que o usuário carrega o site de volta, este cookie é enviado com a solicitação. Isso ajuda a controlar as ações dos usuários. Existem vários usos de cookies HTTP.

  • Gerenciamento de sessão
  • Personalização (sistemas de recomendação)
  • Rastreamento de usuário

Para usar cookies com Koa, temos as funções: ctx.cookies.set() e ctx.cookies.get(). Para definir um novo cookie, vamos definir uma nova rota em nosso aplicativo Koa.

var koa = require('koa');
var router = require('koa-router');
var app = koa();

_.get('/', setACookie);

function *setACookie() {
   this.cookies.set('foo', 'bar', {httpOnly: false});
}

var _ = router();

app.use(_.routes());
app.listen(3000);

Para verificar se o cookie está configurado ou não, basta acessar o navegador, iniciar o console e inserir -

console.log(document.cookie);

Isso produzirá a seguinte saída (você pode ter mais cookies definidos, talvez devido a extensões em seu navegador).

"foo = bar"

Aqui está um exemplo do acima.

O navegador também envia cookies de volta toda vez que consulta o servidor. Para visualizar um cookie em seu servidor, no console do servidor em uma rota, adicione o seguinte código a essa rota.

console.log('Cookies: foo = ', this.cookies.get('foo'));

Na próxima vez que você enviar uma solicitação para esta rota, receberá a seguinte saída.

Cookies: foo = bar

Adicionando Cookies com Tempo de Expiração

Você pode adicionar cookies que expiram. Para adicionar um cookie que expira, basta passar um objeto com a propriedade 'expira' definida para a hora em que deseja que ele expire. Por exemplo,

var koa = require('koa');
var router = require('koa-router');
var app = koa();

_.get('/', setACookie);

function *setACookie(){
   //Expires after 360000 ms from the time it is set.
	this.cookies.set('name', 'value', { 
      httpOnly: false, expires: 360000 + Date.now() });
}

var _ = router();

app.use(_.routes());
app.listen(3000);

Excluindo Cookies Existentes

Para remover um cookie, simplesmente defina o cookie como uma string vazia. Por exemplo, se você precisar limpar um cookie chamadofoo, use o código a seguir.

var koa = require('koa');
var router = require('koa-router');
var app = koa();

_.get('/', setACookie);

function *setACookie(){
   //Expires after 360000 ms from the time it is set.
   this.cookies.set('name', '');
}

var _ = router();

app.use(_.routes());
app.listen(3000);

Isso irá remover a definição do referido cookie. Observe que você deve deixar oHttpOnly opção para ser verdadeira quando não usar o cookie no código do lado do cliente.