Wallogit.com
2017 © Pedro Peláez
微信网站扫码登录
微信网站扫码登录, (*1)
注意: 本模块不依赖用户模块,数据表里的
user_id可以由开发者通过事件关联到用户表 注意: 依赖overtrue/wechat作服务层, (*2)
因为微信扫码对浏览器没有判断能力(像钉钉扫码可以限制在UserAgent含有Dingtalk时显示), 建议在设置
middleware时顺序放最后面, 比如放在goodowng/laravel-dingtalk-oauth后面, 因为dingtalk可以根据UserAgent判断是否符合钉钉扫码条件, 不符合钉钉再显示微信二维码,不容易冲突或者拦截掉本该显示钉钉二维码的场景。, (*3)
当用户满足以下条件时,解析微信信息:, (*4)
未登录非微信客户端
code参数时middleware解析该请求,获得该登录者微信信息;, (*5)
根据该微信信息,查找或创建WechatWebUser身份;, (*6)
若是新用户,则触发WebUserCreated($wechatWebUser)事件, (*7)
触发WebUserAuthorized($wechatWebUser)事件, (*8)
注意:本模块不会自动创建
User用户,更不会自动登录。若有类似需求,需要监听以下事件并写相应逻辑的代码: - 监听WebUserCreated事件,创建User对象 - 监听WebUserAuthorized事件,进行登录用户的逻辑, (*9)
安装依赖模块, (*10)
composer require "goodwong/laravel-wechat-web"
打开config/app.php,在providers数组里注册服务:, (*11)
// Application Service Providers... Goodwong\WechatWeb\WechatWebServiceProvider::class,
创建数据库表, (*12)
php artisan migrate
设置 appid / appsecret 在.env文件中,增加下面内容:, (*13)
WECHAT_WEB_APPID= WECHAT_WEB_SECRET= WECHAT_WEB_AUTO_REDIRECT= WECHAT_WEB_USE_SESSION=
有两种方式设置中间件:, (*14)
设置 middleware 在app/Http/Kernel.php里添加:, (*15)
/**
* The application's route middleware.
*
* These middleware may be assigned to groups or used individually.
*
* @var array
*/
protected $routeMiddleware = [
// ...
'wechat_web_oauth' => \Goodwong\WechatWeb\Middleware\OAuthAuthenticate::class,
];
直接在web.php的路由规则里添加:, (*16)
// user auth
Route::group([
'middleware' => [
\Goodwong\WechatWeb\Middleware\OAuthAuthenticate::class,
],
], function () {
// ...
});
在.env文件中,配置以下信息:, (*17)
微信平台, (*18)
WECHAT_WEB_APPID= WECHAT_WEB_SECRET=
这些信息可以在开放平台里注册获取, (*19)
当用户未登录时,是否跳转路由到微信扫码登录网站?默认不跳转(由开发者自己发起跳转,或者在前端页面中显示二维码), (*20)
WECHAT_WEB_AUTO_REDIRECT=true
是否使用session缓存微信扫码结果?默认不缓存, (*21)
WECHAT_WEB_USE_SESSION=0