web-dev-qa-db-fra.com

Comment définir des cookies dans ApplicationController?

Je dois définir des cookies dans mon ApplicationController mais je ne sais pas comment. J'ai essayé d'utiliser des cookies - rien, en utilisant ActionController :: Cookies - rien. Je n'ai besoin de rien de plus que de définir et d'obtenir des cookies, mais ce dont j'ai besoin, c'est de les placer dans ApplicationController.

ÉDITER:

Trouvé la réponse: request.cookies['help'] = 'yes'

29
AndrewShmig

Que voulez-vous dire en définissant un cookie dans le contrôleur d'application? Vous définiriez un cookie dans le navigateur correspondant à une action du contrôleur. Si vous souhaitez définir le cookie pour toutes les actions, vous pouvez envisager d'utiliser un filtre avant et d'appliquer ce filtre à toutes vos actions de contrôleur.

Vous pouvez définir et supprimer les cookies comme indiqué ci-dessous:

   cookies[:key] = {
       :value => 'a yummy cookie',
       :expires => 1.year.from_now,
       :domain => 'domain.com'
     }

     cookies.delete(:key, :domain => 'domain.com')

Veuillez noter que si vous spécifiez un: domaine lors de la configuration d'un cookie, vous devez également spécifier le domaine lors de la suppression du cookie.

par exemple. cookies[:user_name] = "david"

41
amit_saxena

Vous pouvez simplifier les cookies que vous souhaitez conserver pendant un certain temps

cookies.permanent[:some_cookie] = "Gingerbread"
16
jacklin

Les cookies sont lus et écrits via les cookies ActionController #. Les cookies lus sont ceux reçus avec la demande, les cookies en cours d'écriture seront envoyés avec la réponse. La lecture d'un cookie ne récupère pas l'objet cookie lui-même, juste la valeur qu'il contient.

cookies[:appToken] = {
  value: 'IOWQ92038192319JKNJKW',
  expires: 1.year.from_now,
  domain: 'www.example.com',
  path: '/admin',
  secure: false,
  httponly: false,
}

path - Le chemin pour lequel ce cookie s'applique. Par défaut à la racine de l'application.

secure - Indique si ce cookie est uniquement transmis aux serveurs HTTPS. La valeur par défaut est false.

httponly - Indique si ce cookie est accessible via des scripts ou uniquement HTTP. Par défaut, false. Si cookie httponly est défini sur true, le cookie est accessible via Javascript. Ceci est défini à des fins de sécurité afin de protéger le cookie contre un pirate qui espionne sur le canal de communication entre le navigateur et le serveur. Cependant, l'écoute clandestine n'est pas le seul vecteur d'attaque à saisir le cookie. L'attaquant peut profiter de la vulnérabilité XSS pour voler le cookie d'authentification. Il s'avère qu'un indicateur HttpOnly peut être utilisé pour résoudre ce problème.

Pour plus d'informations - https://api.rubyonrails.org/v5.2.1/classes/ActionDispatch/Cookies.html

0
Vivek Kumar