ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

yii图书商城 学习笔记之六 后台帐号模块

2021-05-01 12:03:54  阅读:274  来源: 互联网

标签:info return 帐号 yii 之六 pwd user login auth


mysql 管理员数据表设计

表字段一览
uid 用户uid
nickname 用户名
mobile 手机号码
email 邮箱地址
sex 1:男 2:女 0:没填写
avatar 头像
login_name 登录用户名
login_pwd 登录密码
login_salt 登录密码的随机加密秘钥
status 1:有效 0:无效
updated_time 最后一次更新时间
created_time 插入时间

借助cookie实现管理员登录退出功能和优化

con/UserContoller

class UserContoller extends BaseWebContoller 
{
    public function actionLogin()
    {
        //如果是get请求,直接展示登录页面
        if (\Yii::$app->request->isGet) {
            $this->layout = 'user';
            return $this->render('login');
        }
        //登录逻辑处理
        $login_name = trim($this->post('login_name', ""));
        $login_pwd = trim($this->post('login_pwd', ""));
        if (!$login_name || !$login_pwd) {
            return '<script>alert("请输入正确的用户名和密码");</script>'
        }
        //从用户表获取login_name = $login_name 信息是否存在
        $user_info = User::find()->where(['login_name' => $login_name])->one();
        if (!$$user_info) {
            return '<script>alert("请输入正确的用户名和密码");</script>'
        }
        //验证密码
        //密码加密算法= md5(login_pwd + md5(login_salt))
        $auth_pwd = md5($login_pwd.md5($user_info['login_salt']));
        if ($auth_pwd != user_info['login_pwd']) {
            return '<script>alert("请输入正确的用户名和密码");</script>'
        }
        //保存用户的登录状态
        //cookies 进行保存用户登录态
        // 加密字符串 + "#" + uid, 加密字符串 = md5(login_name + login_pwd + login_salt)
        $auth_token = md5($user_info['login_name'].$user_inf['login_pwd'].$user_info['login_salt']);
        $this->setCookie("mooc_book", $auth_token."#".$user_info['uid']);
        return $this->redirect(UrlService::buildWebUrl("/dashboard/index"));
        // return $this->renderJs('请输入正确的用户名和密码', UrlService::buildWebUrl('/user/login'));
    }
}

使用gii生成模型

插入一条用户数据

新建工具函数

BaseWebController

class BaseWebController
{
    //统一js提醒
    public function renderJs($msg, $url) {
        return $this->renderPartical("@app/views/common/js", ['msg' => $msg, 'url' => $url]);
    }
}

common/js

<script>
 alert("<?=$msg;?>")
</script>
class UserContoller
{
    public function actionLogout() 
    {
        $this->removeCooke("mooc_book");
        return $this->redirect(UrlService::buildWebUrl("/user/login"));
    }
}

统一验证
common/BaseController

class BaseController extends BaseWebController 
{
    public function __construct($id, $module, array $config = []) 
    {
        parent::__construct($id, $module, $config);
        $this->layout = "main";
    }
    public function beforeAction($action) 
    {
        $is_login = $this->checkLoginStatus();
        if ($is_login) {
            if (\Yii:$app->request->isAjax) {
                $this->renderJson([], "未登录", 302);

            } else {
                $this->redirect(UrlService::buildWebUrl("/user/login"));
            }
            return false;
        }
        return true;
    }
    //验证是否当前登录态有效
    private function checkLoginStatus()
    {
        $auth_cookie =$this->getCookie("mooc_book", "")
        if (!$auth_cookie) {
            return false;
        }
        list($auth_token, $uid) = explode("#", $auth_cookie);
        if (!$auth_token || !$uid ) {
            return false;
        }
        if (preg_match("/^\d+$/", $uid)) {
            return false;
        }
        $user_info = User::find()->where(['uid' =>$uid])->one();
        if (!$user_info) {
            return false;
        }

        $auth_token_md5 = md5($user_info['login_name'].$user_info['login_pwd'].$user_info['login_salf']);
        if ($auth_token != $auth_token_md5) {
            return false;

        }
        return true;
    }
}

让仪表盘继承BaseController

标签:info,return,帐号,yii,之六,pwd,user,login,auth
来源: https://www.cnblogs.com/Qyhg/p/14723994.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有