标签归档:laravel

Laravel api路由支持session

laravel5.5版本,使用api路由。在测试接口过程中发现session无法写入,主要原因在于laravel在定义api路由组时并没有设置支持session相关选项。

打开文件:app\Http\Kernel.php

在api数组中增加:

\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Session\Middleware\StartSession::class,

如下:

'api' => [
    \App\Http\Middleware\EncryptCookies::class,
    \Illuminate\Session\Middleware\StartSession::class,
    'throttle:60,1',
    'bindings',
],

Laravel阿里大鱼短信扩展包使用

最近在做用户注册相关的功能,需要用到阿里大鱼发送短信,使用的这个扩展包(https://github.com/MissMyCat/aliyun-sms),比较好用。

  • 安装 composer require mrgoon/aliyun-sms dev-master

基于laravel框架的使用方法

  • 加载 在config/app的providers中添加 Mrgoon\AliSms\ServiceProvider::class

同时,可以选择性添加aliases

控制台运行: php artisan vendor:publish

根据新增的aliyunsms.php 文件,在.env文件中添加环境变量:

ALIYUN_SMS_AK=your access key
ALIYUN_SMS_AS=your secret key
ALIYUN_SMS_SIGN_NAME=sign name
  • 使用
$aliSms = new AliSms();
$response = $aliSms->sendSms('phone number', 'SMS_code', ['name'=> 'value in your template']);
//dump($response);

非laravel框架的使用方法

  • 加载方式通过composer,不变
  • 使用样例代码如下:
$config = [
        'access_key' => 'your access key',
        'access_secret' => 'your access secret',
        'sign_name' => 'your sign name',
    ];

    $aliSms = new Mrgoon\AliSms\AliSms();
    $response = $sms->sendSms('phone number', 'tempplate code', ['name'=> 'value in your template'], $config);

laravel 社会化登录简介

socialite作为官方包使用起来非常方便,目前支持大多数的社会化登录网站,比如微信,微博,Github等等。

具体支持哪些网站,参见列表:https://socialiteproviders.github.io/about.html

比如网站需要对接微信web授权登录,使用https://socialiteproviders.github.io/providers/weixin.html即可,文档已经写的比较完善,这里不再赘述。

举个微信实际例子:

<?php

namespace App\Http\Controllers\WeChat;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Laravel\Socialite\Facades\Socialite;


class WeChatController extends Controller
{
    public function oauth(Request $request)
    {
        $url = $request->input('url', ''); // 来源url
        return Socialite::with('weixin')->redirectUrl(url("wechat/auth/callback?url=".urlencode($url)))->redirect();
    }

    public function callback(Request $request)
    {
        $oauthUser = Socialite::with('weixin')->user();
        $request->session()->put('user_wechat', $oauthUser->user);
        return redirect($request->input('url'));
    }
}

在中间件中判断session是否存在,不存在调用oauth接口即可。可以说灰常方便了😀

CAS流程图

Laravel使用phpCAS注意点

项目使用框架为Laravel5.5,CAS客户端为https://github.com/apereo/phpCAS
注意事项:
  1. php扩展需要安装xml扩展
  2. phpCAS支持composer引入,composer require jasig/phpcas 注意命名空间为根目录
  3. phpCAS使用的session为原生php session(laravel是自己实现的session机制),需要配置session文件目录读写权限 php-fpm www.conf配置路径
  4. phpCAS错误日志默认写在环境变量$_ENV指定的TMP等路径中,参见https://github.com/apereo/phpCAS/blob/master/source/CAS.php第248行,如果系统是win,则会放在根目录下。
具体使用可以参考phpCAS的docs/examples
附上一张CAS流程图:
CAS流程图