微信小程序开发记账应用实战服务端之用户注册与登录-基于Yii2描述
2016-10-05 00:00
1386 查看
框架下载地址:http://www.yiiframework.com/download/
选择advanced版本
初始化:项目目录给予读写权限后,打开命令行控制台,切换到项目目录,命令行执行
将自动创建一系列文件:
配置数据库连接
迁移数据
将为我们创建好User表
为User表增加一个openid字段
将字段username auth_key password_hash email设置为allow null
创建分类Category、收支Item
http://localhost/finance-web/backend/web/index.php?r=gii
流程:如果用户是首次登录,则为user表插入一条数据,并返回该用户;如果是老用户,并查询到此用户返回。微信小程序将包括用户id等信息缓存到localStorage
创建WechatLogin模型
增加openid的登录方式findByOpenid()方法
创建APIController基类,用于json格式化输出
创建UserController,用于登录
创建微信登录Model
到此,完成用户登录。
使用Postman测试一下。
实际操作中,发现没有appId,则不能拿到res.code,于是就解析不了openid,所以在微信开放公测之前,姑且拿nickname作为openid使用。
未完待续...
谢谢阅读,希望本文对你有帮助,有问题可以在公众号给我留言交流,订阅号:huangxiujie85
选择advanced版本
初始化:项目目录给予读写权限后,打开命令行控制台,切换到项目目录,命令行执行
php init
将自动创建一系列文件:
Yii Application Initialization Tool v1.0 Which environment do you want the application to be initialized in? [0] Development [1] Production Your choice [0-1, or "q" to quit] 0 Initialize the application under 'Development' environment? [yes|no] yes Start initialization ... generate backend/config/main-local.php generate backend/config/params-local.php generate backend/web/index-test.php generate backend/web/index.php generate common/config/main-local.php generate common/config/params-local.php generate console/config/main-local.php generate console/config/params-local.php generate frontend/config/main-local.php generate frontend/config/params-local.php generate frontend/web/index-test.php generate frontend/web/index.php generate tests/codeception/config/config-local.php generate yii generate cookie validation key in backend/config/main-local.php generate cookie validation key in frontend/config/main-local.php chmod 0777 backend/runtime chmod 0777 backend/web/assets chmod 0777 frontend/runtime chmod 0777 frontend/web/assets chmod 0755 yii chmod 0755 tests/codeception/bin/yii ... initialization completed.
配置数据库连接
<?php return [ 'components' => [ 'db' => [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=localhost;dbname=yii2advanced', 'username' => 'root', 'password' => '', 'charset' => 'utf8', ] ], ];
迁移数据
php yii migrate
将为我们创建好User表
Yii Migration Tool (based on Yii v2.0.9) Creating migration history table "migration"...Done. Total 1 new migration to be applied: m130524_201442_init Apply the above migration? (yes|no) [no]:yes *** applying m130524_201442_init > create table {{%user}} ... done (time: 0.683s) *** applied m130524_201442_init (time: 0.811s) 1 migration was applied. Migrated up successfully.
为User表增加一个openid字段
ALTER TABLE `user` ADD `openid` VARCHAR( 255 ) NOT NULL AFTER `updated_at`
将字段username auth_key password_hash email设置为allow null
创建分类Category、收支Item
http://localhost/finance-web/backend/web/index.php?r=gii
流程:如果用户是首次登录,则为user表插入一条数据,并返回该用户;如果是老用户,并查询到此用户返回。微信小程序将包括用户id等信息缓存到localStorage
创建WechatLogin模型
增加openid的登录方式findByOpenid()方法
创建APIController基类,用于json格式化输出
<?php namespace frontend\controllers; use yii\web\Controller; use Yii; use yii\web\Response; class APIController extends Controller { //json方法 public function json($data, $code = 1001, $msg = '加载成功') { Yii::$app->response->format = Response::FORMAT_JSON; echo \yii\helpers\Json::encode(['code' => $code, 'msg' => $msg, 'data' => $data]); } }
创建UserController,用于登录
<?php namespace frontend\controllers; use Yii; use yii\web\Controller; use common\models\WechatLogin; class UserController extends APIController { // 允许外部提交 public $enableCsrfValidation = false; /** * Logs in a user. * * @return mixed */ public function actionLogin() { $model = new WechatLogin(); if ($model->load(Yii::$app->request->post()) && $model->login()) { $this->json(\yii\helpers\ArrayHelper::toArray($model->login()), 1000, '登录成功'); } else { $this->json([], 404, '登录失败'); } } }
创建微信登录Model
<?php namespace common\models; use Yii; use yii\base\Model; class WechatLogin extends Model { public $openid; public $rememberMe = true; private $_user; /** * @inheritdoc */ public function rules() { return [ ['openid', 'safe'], ['rememberMe', 'boolean'], ]; } public function login() { if ($this->validate()) { Yii::$app->user->login($this->getUser(), $this->rememberMe ? 3600 * 24 * 30 : 0); return $this->getUser(); } else { return false; } } /** * Finds user by [[username]] * * @return User|null */ protected function getUser() { if ($this->_user === null) { $this->_user = $this->findByOpenid($this->openid); } return $this->_user; } /** * 增加openid登录的方式 */ public function findByOpenid($openid) { $user = User::findOne(['openid' => $openid]); if ($user) { // 如果已经用户存在 return $user; } else { $model = new User(); $model->openid = $openid; $time = time(); $model->created_at = $time; $model->created_at = $time; $model->status = User::STATUS_ACTIVE; if ($model->save()) { return $model; } // 创建这个用户并返回 } } }
到此,完成用户登录。
使用Postman测试一下。
url:localhost/finance-web/frontend/web/index.php?r=user/login param:WechatLogin[openid] = 黄秀杰 response:{"code":1000,"msg":"登录成功","data":{"openid":"黄秀杰","created_at":1475654180,"status":10,"updated_at":1475654180,"id":4}}
实际操作中,发现没有appId,则不能拿到res.code,于是就解析不了openid,所以在微信开放公测之前,姑且拿nickname作为openid使用。
未完待续...
谢谢阅读,希望本文对你有帮助,有问题可以在公众号给我留言交流,订阅号:huangxiujie85
相关文章推荐
- 微信小程序开发记账应用实战服务端之用户注册与登录基于ThinkPHP5描述
- 微信小程序开发记账应用实战服务端之用户注册与登录基于Codeigniter3描述
- 微信小程序开发3-用户登录.注册模块
- 微信小程序(应用号)实战课程之记账应用开发
- 微信小程序(应用号)实战课程之记账应用开发(续)
- Android基于XMPP Smack Openfire下学习开发IM(一)实现用户注册、登录、修改密码和注销等
- Android基于XMPP Smack Openfire下学习开发IM(一)实现用户注册、登录、修改密码和注销等
- Android基于XMPP Smack Openfire下学习开发IM(一)实现用户注册、登录、修改密码和注销等
- Android基于XMPP Smack Openfire下学习开发IM(一)实现用户注册、登录、修改密码和注销等
- javaweb学习总结(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册
- Android基于XMPP Smack Openfire下学习开发IM(一)实现用户注册、登录、修改密码和注销等
- 基于Smack3.0.4+ Openfire3.10.2下学习开发IM(一)实现用户登录、修改密码、删除指定用户和注册新用户等
- 基于Servlet+JSP+JavaBean开发模式的用户登录注册
- javaweb学习总结(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册
- Android实战简易教程-第二十三枪(基于Baas的用户注册和登录模块实现!)
- Android基于XMPP Smack Openfire下学习开发IM(一)实现用户注册、登录、修改密码和注销等
- Android基于XMPP Smack Openfire下学习开发IM(一)实现用户注册、登录、修改密码和注销等
- 【转载】 javaweb学习总结(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册 - 孤傲苍狼 - 博 http://www.cnblogs.com/xdp-gacl/
- Android基于XMPP Smack Openfire下学习开发IM(一)实现用户注册、登录、修改密码和注销等
- javaweb学习总结(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册