非加密方式(简单,但不推荐)

步骤 1

在全局容器中加入Cookie:

  1. $di->set('cookies', function () {
  2. $cookies = new \Phalcon\Http\Response\Cookies();
  3. $cookies->useEncryption(false); //默认使用加密方式,但这里我们刚开始使用非加密方式
  4. return $cookies;
  5. });

  

步骤 2

首先,需要在用户登陆时根据用户的输入信息生成cookies,然后存储在cookies中,并设置好失效的时间。 
如下所示:

  1. //设备变量name=xxx,有效时间为未来一周
  2. $this->cookies->set('name', 'xxx', time() + 7 * 86400);
  3. $this->cookies->set('passwd', 'xxx', time() + 7 * 86400);

  

步骤 3

通常Phalcon的项目中会使用ACL进行用户的访问控制,而要实现用户在任何时间打开浏览器直接访问,就需要在ACL控制逻辑中获取Cookie中的值进行判断。

  1. //获得name
  2. $this->cookies->get('name')->getValue();
  3. $this->cookies->get('passwd')->getValue();

  

加密方式(推荐)

加密方式是默认的Cookie方式,但在使用前必须满足以下条件:

1. 在全局容器中加入crypt并定义key,即:

  1. $di->set('cookies', function () {
  2. $cookies = new \Phalcon\Http\Response\Cookies();
  3. // $cookies->useEncryption(false);
  4. return $cookies;
  5. });
  6.  
  7. $di->set('crypt', function (){
  8. $crypt = new Phalcon\Crypt();
  9. $crypt->setKey('xxxxxx'); //salt
  10. return $crypt;
  11. });

  

2. 由于crypt依赖于php中的mcrypt扩展,所以必须安装

3. 使用加密方式后,Phalcon中有一个bug存在,即在以下代码中获取数据时会有空白字符:

  1. //获得name
  2. $this->cookies->get('name')->getValue();
  3. $this->cookies->get('passwd')->getValue();

  

必须改成:

  1. trim($this->cookies->get('name')->getValue());
  2. trim($this->cookies->get('passwd')->getValue());

  

pahlcon:cookies设置的更多相关文章

  1. scrapy的User-Agent中间件、代理IP中间件、cookies设置、多个爬虫自定义settings设置

    在scrapy的反爬中,常用的几个配置,简单总结了下: User-Agent中间件: from fake_useragent import UserAgent class RandomUserAgen ...

  2. requests 进阶用法学习(文件上传、cookies设置、代理设置)

    一.文件上传 1.模拟网站提交文件 提交此图片,图片名称:timg.jpg import requests files={ 'file':open('timg.jpg','rb') } respons ...

  3. cookies设置时间

    默认cookies失效时间是直到关闭浏览器,cookies失效,也可以指定cookies时间. Response.Cookies("user_name").Expires=Date ...

  4. Cookies设置,获取,删除

    之前的博客,整理了下Session的存储方式和原理http://www.cnblogs.com/chinaagan/p/3200456.html. 本篇再次整理下Cookies的使用和原理. 参考博客 ...

  5. C# Cookies设置和读取

    public ActionResult Index() { #region 写入Cookies HttpCookie cookie = new HttpCookie("CookieName& ...

  6. phpcms免登录cookies设置方案

    PHPCMS的SESSION时间长一些的解决办法修改两个文件: phpsso_server/caches/configs/system.php里的 'session_ttl' => 999999 ...

  7. cookies的获取,删除,设置

    cookies,sessionStorage 和 localStorage 的区别? 1.cookie在浏览器和服务器间来回传递. sessionStorage和localStorage不会: 2.s ...

  8. 【Django】关于设置和获取cookies

    def TestCookies(request): response=HttpResponse() # cookie=request.COOKIES#下面两句等cookies设置以后,才使用 # if ...

  9. Webform(六)——登录状态保持(Cookies内置对象)

    用户用浏览器访问一个网站,由于采用的http的特性,Web服务器并不能知道是哪一个用户正在访问,但一些网站,希望能够知道访问者的一些信息,例如是不是第一次访问,访问者上次访问时是否有未做完的工作,这次 ...

随机推荐

  1. bat命令运行java程序

    注意空格 本文主要介绍在window下bat批处理文件调用java的方法. @echo off echo 正在加密,请稍后....echo path:%~dp0 set base=%~dp0 set ...

  2. CF519 ABCD D. A and B and Interesting Substrings(map,好题)

    A:http://codeforces.com/problemset/problem/519/A 水题没什么好说的. #include <iostream> #include <st ...

  3. 我的第一次NGS分析操作

    部分参考自:生物信息学100个基础问题 —— 番外2: 用Anaconda快速搭建生物信息学分析平台 - 孟浩巍的文章 - 知乎 https://zhuanlan.zhihu.com/p/357114 ...

  4. Flask之初体验

    Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理,然后 ...

  5. Extjs添加行双击事件

    var grid = new Ext.grid.GridPanel({ store: store, trackMouseOver: false, disableSelection: true, aut ...

  6. Sqlserver生成带数据的脚本

    右键数据库—>任务—>生成脚本 下一步 选择要导出数据库,下一步 编写数据脚本选择True,下一步 选择要导出的表,下一步 最后点击完成即可.

  7. sidekiq安装及使用

    参考:https://github.com/mperham/sidekiq/wiki/Getting-Started https://wdxtub.com/2016/07/06/sidekiq-gui ...

  8. SPOJ - COT Count on a tree

    地址:http://www.spoj.com/problems/COT/en/ 题目: COT - Count on a tree #tree You are given a tree with N  ...

  9. javaee加密部署,tomcat使用自己的classloader解密

    http://www.2cto.com/kf/201312/264455.html [起因] 公司需要对一个web项目进行加密之后出售, 大家都知道的,class很好反编译, 所以需要对class文件 ...

  10. 20145322《Java程序设计》第3次实验报告

    实验内容,, 组队使用 git 上传代码并且互相下载对方代码修改之后再上传. 实现代码的重载 一. 使用git 上传代码 过程如图: 仨人成功上传后的代码图如下: 使用git 相互更改代码 执行git ...