TP5.1对登录的返回码优化

举报
原来是咔咔 发表于 2022/03/27 01:45:02 2022/03/27
【摘要】 继这篇文章继续优化https://blog.csdn.net/fangkang7/article/details/83414935   在上文中这样的返回码是不灵活的,我们在进行下一步优化 1.创建一个message的配置文件,用来存放 错误信息 <?phpreturn [ 'code' ...

继这篇文章继续优化https://blog.csdn.net/fangkang7/article/details/83414935

 

在上文中这样的返回码是不灵活的,我们在进行下一步优化

1.创建一个message的配置文件,用来存放 错误信息


  
  1. <?php
  2. return [
  3. 'code' => [
  4. 'SUCCESS' => 1,
  5. 'USER_LOGIN_VALIDATE_ERROR' => -1000,
  6. 'ERROR_NO_USER' => -1001,
  7. 'ERROR_USER_START' => -1002,
  8. 'ERROR_PASSWORD' => -1003,
  9. 'ERROR_LOGIN_EXCESS_TIME_OUT' => -1005,
  10. ],
  11. 'info' => [
  12. 1 => '操作成功',
  13. -1000 => '用户登录校验不成功',
  14. -1001 => '用户不存在',
  15. -1002 => '用户状态不对',
  16. -1003 => '用户密码错误',
  17. -1005 => '登录超过规定次数'
  18. ]
  19. ];

2.创建MessageBehavior钩子文件(自定义bahavior命令创建看https://blog.csdn.net/fangkang7/article/details/83415607

创建完成需要做配置 

3.获取message的信息,为了方便保存为常量


  
  1. <?php
  2. namespace app\behavior;
  3. use Config;
  4. class MessageBehavior
  5. {
  6. public function run()
  7. {
  8. $codes = Config::get('message.code');
  9. foreach ($codes as $key => $value) {
  10. define($key,$value);
  11. }
  12. }
  13. }

 4.在common文件中写方法,一个是规定返回格式,一个是获取状态码信息


  
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | ThinkPHP [ WE CAN DO IT JUST THINK ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2006-2016 http://thinkphp.cn All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
  8. // +----------------------------------------------------------------------
  9. // | Author: 咔咔
  10. // +----------------------------------------------------------------------
  11. // 应用公共文件
  12. function ajaxRuturn($code,$data=[]){
  13. $result = ['code' => $code , 'message' => getMessage($code)];
  14. $result = (!empty($data)) ? $result['data'] = $data : $result;
  15. return $result;
  16. }
  17. function getMessage($code){
  18. $info = config('message.info');
  19. return (array_key_exists($code,$info) ? $info[$code] : '操作失败');
  20. }

5.修改service中的代码(就是文章开始的那个图),将状态码的常量返回


  
  1. <?php
  2. namespace app\service;
  3. use app\model\user\User;
  4. class UserService
  5. {
  6. public function login($username,$password)
  7. {
  8. $user = User::where(['user_name'=>$username])->find();
  9. if(!$user){
  10. //用户名不存在
  11. return ERROR_NO_USER;
  12. }
  13. if($user->user_status != 1){
  14. // 用户是否被封
  15. return ERROR_USER_START;
  16. }
  17. if(!password_verify($password,$user->user_password)){
  18. // 密码错误,登录失败
  19. return ERROR_PASSWORD;
  20. }
  21. //登录成功
  22. return SUCCESS;
  23. }
  24. }

 6.修改login页面的方法


  
  1. <?php
  2. namespace app\admin\controller;
  3. use think\Controller;
  4. use app\model\user\User;
  5. use app\service\UserService;
  6. use Request;
  7. use Db,Log;
  8. class Login extends Controller
  9. {
  10. private $userService;
  11. /**
  12. * 初始化
  13. */
  14. public function initialize()
  15. {
  16. $this->userService = new UserService;
  17. }
  18. /**
  19. * 登录
  20. * @return \think\Response
  21. */
  22. public function login()
  23. {
  24. if(Request::isPost()){
  25. $username = Request::param('username');
  26. $password = Request::param('password');
  27. return ajaxRuturn($this->userService->login($username,$password));
  28. }
  29. return $this->fetch();
  30. }
  31. }

 响应:

文章来源: blog.csdn.net,作者:咔咔-,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/fangkang7/article/details/83418641

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。