使用Laravel和jwt-auth编写API

JSON Web Token(JWT)是一个轻量级的认证规范,它允许用户和服务器之间传递安全可靠的信息。

在传统的WEB应用中,服务端成功的返回一个响应于两件事。其一是通过一种存储机制保存会话信息(SESSION)。每一个会话都有它独特的信息,常常是一个长的,随机化的字符串,它被用来让未来的请求检索信息。其次,包含在响应头里面的信息使客户端保存了一个COOKIE。服务器自动的在每个子请求里面加上了会话ID,这使得服务器可以通过检索SESSION中的信息来辨别用户。
API应该被设计成无状态的。这意味着没有登录,注销的方法,也没有SESSION和COOKIE。因此,我们引入JWT。

使用jwt进行认证和授权

认证

客户端向服务器发送用于登录的用户名和密码,服务器将用户名和密码和数据库比对成功后,将一条形如

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ

的token返回给客户端,客户端应在本地存储这个token。
这条token被.分为三个部分:头部(Header),载荷(Payload)和签名(Signature)。其中头部的algtyp两个字段定义了此token所使用的加密算法和token类型;载荷中包含有认证用户的信息;签名则将头部和载荷以及key用base64编码后计算SHA256。

PHP获取微信小程序的带参数二维码

最近公司的一款产品需要用到微信小程序的带参数的二维码。虽然微信提供了现成的API,但是整个过程中有非常多的坑。
微信的官方文档:获取二维码 · 小程序

获取Access Token

获取二维码的接口需要用到应用的Access Token。只需要向微信的提供的接口发送AppIDAppSecret即可获得Access Token。每个Access Token的有效期为7200秒,我们的方案是获取到Access Token之后将其写入Redis并设置7200秒的过期时间。

Laravel 学习笔记

安装

composer global require "laravel/installer"

Laravel 可执行文件位于$HOME/.composer/vendor/bin
使用laravel new创建新项目

laravel new blog

配置

目录权限

Directories within the storage and the bootstrap/cache directories should be writable by your web server or Laravel will not run.

Application Key

.env配置文件中设置 Application Key,它应该有32 个字符长。
使用

php artisan key:generate

生成一个key。

美化链接

Laravel自带.htaccess文件,需要开启Apache的mod_rewrite模块
– nginx配置

location / {
    try_files $uri $uri/ /index.php?$query_string;
}

使用Composer

Composer 是 PHP 的一个依赖管理工具。它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们。

安装

curl -sS https://getcomposer.org/installer | php

让 composer 可以在全局进行调用

mv composer.phar /usr/local/bin/composer

将官方数据源修改为国内镜像

composer config -g repo.packagist composer https://packagist.phpcomposer.com

Yii框架学习笔记

从压缩文档安装

Installing Yii from an archive file involves three steps:

  • Download the archive file from yiiframework.com.
  • Unpack the downloaded file to a Web-accessible folder.
  • Modify the config/web.php file by entering a secret key for the cookieValidationKey configuration item (this is done automatically if you are installing Yii using Composer):
'cookieValidationKey' => 'enter your secret key here',
  • 使用浏览器访问/basic/web/index.php,如果有报错则根据报错信息解决错误。
  • 执行php yii server运行yii的内置Web Server,默认运行在http://localhost:8080/

You should see the above “Congratulations!” page in your browser.
依赖:

sudo apt install php7.0-mbstring

nginx + php-fpm部署php应用

前段时间发现站点的访问变得很不稳定,最开始以为只是网速的问题就没有太在意,直到有一次莫名其妙宕机,ssh上去重启服务,顺便top了一下结果吓了一跳–空闲的物理内存只有几百k了。再往下看发现了一大串apache进程,而且每个进程的内存占用都不小。听说nginx的效率要比apache高,于是决定换上nginx试试。
注意:本文只介绍从LAMP迁移至LNMP的步骤,其中需要改动的只有nginx 和php5,关于MySQL的配置请自行Google,本文不再赘述。

使用树莓派搭建钓鱼WiFi热点

前段时间有一则新闻说使用一台普通电脑搭建的wifi热点就可以窃取使用者的网银和支付宝等密码。但是稍微有点常识的人都会知道:支付相关的网站和部分网站的登陆页面都使用了https连接,所以破解这种加密就不要指望了。不过我们可以换一下思路,比如伪造一个联通WLAN的登陆页面,然后窃取使用者的WLAN号码和密码。

环境配置

需要用到的硬件:

  • 树莓派一台
  • USB无线网卡一个

需要用到的软件

  • apache2
  • php5
  • hostapd
  • dnsmasq