首页 > 其他分享 >注销用户及修改密码

注销用户及修改密码

时间:2023-08-21 18:24:23浏览次数:30  
标签:登录 text 用户 密码 token 注销 response

1.使用场景:

注销用户:点击下拉框注销登录,弹出确认框,确认后注销,并重定向到登录页面

修改密码:点击下拉框修改密码,弹出新密码和确认密码,输入后确认,并重定向到登录页面重新登录

<el-dropdown-item><span @click="changePasswd">修改密码</span></el-dropdown-item>
<el-dropdown-item><span @click="logOut">注销登录</span></el-dropdown-item>

  

注销部分:

logOut() {
      const tips = "此操作将注销用户登录,是否继续?"
      this.$confirm(tips, '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning',
        center: true
      }).then(() => {
        axios.post(this.$webSite + '/logout_api/').then(response => {
          if (response.data.code === 200) {
            showSuccess(response.data.msg)
            window.localStorage.removeItem('userid');
            window.localStorage.removeItem('token');
            this.$router.push('/login_page');
          } else {
            showError(response.data.msg)
          }
        }).catch(error => {
          console.log(error)
          showError("请求错误,请联系管理员处理!")
        })
      }).catch(() => {
        const message = '欢迎回来!'
        showSuccess(message)
      });
    },

  

修改密码:需要开启一个dialog,进行新密码提交

  <div>
      <el-dialog title="修改密码" :visible.sync="dialogFormVisible" width="30%" :close-on-click-modal="false">
        <el-form :model="form">
          <el-form-item label="新密码" :label-width="formLabelWidth" prop="password"
                        :rules="[{ required: true, message: '请输入密码', trigger: 'blur' }]">
            <el-input placeholder="密码" v-model="form.password" show-password
                      prefix-icon="el-icon-lock" :minlength=5></el-input>
          </el-form-item>
          <el-form-item label="确认密码" :label-width="formLabelWidth" prop="confirm_password"
                        :rules="[{ required: true, message: '请再次输入密码', trigger: 'blur' }]">
            <el-input placeholder="密码" v-model="form.confirm_password" show-password
                      prefix-icon="el-icon-lock" :minlength=5></el-input>
          </el-form-item>
        </el-form>
        <div slot="footer" class="dialog-footer">
          <el-button @click="dialogFormVisible = false">取 消</el-button>
          <el-button type="primary" @click="handleChange">确 定</el-button>
        </div>
      </el-dialog>
    </div>

  

修改密码对应的方法:

changePasswd() {
      this.dialogFormVisible = true
    },

    handleChange() {
      axios.post(this.$webSite + '/change_pwd_api/', this.form).then(response => {
        if (response.data.code === 200) {
          showSuccess(response.data.msg)
          this.$router.push('/login_page');
        } else {
          showError(response.data.msg)
        }
      }).catch(error => {
        console.log(error)
        showError("请求错误,请联系管理员处理!")
      })
    }

  

后台处理逻辑说明:

注销登录:

前端:提交注销请求,请求成功,清除localstorge的token信息,重定向登录页面

后端:接收前端的注销请求,使用Django的logout方法  logout(request) 【from django.contrib.auth import logout】 即可注销登录,之后清除该用户对应token字段的内容(清除的原因是因为有中间件会验证该字段是否有token,无token则代表注销)

tips:后台使用token验证用户登录信息,属于无状态,所以需要在用户表中单独存储token字段,配合中间件验证,达到注销的效果

 

修改密码:

前端:传递新密码和确认密码

后端:接收两个密码,进行验证,其中复杂度验证如下:大于等于8位的大小写数字字符组合

def check_pwd(text):
    if re.search('[a-z]', text) and re.search('[A-Z]', text) and re.search('[0-9]', text) and re.search('[^A-Za-z0-9]', text) and len(text)>=8:
        return 1
    else:
        return 0

 验证成功后,使用Django的 set_password(new_password) 设置新密码,并.save() 进行保存。

 

标签:登录,text,用户,密码,token,注销,response
From: https://www.cnblogs.com/lytcreate/p/17646734.html

相关文章

  • Django自定义中间件验证用户token信息
    1.新建middleware.pyfromdjango.urlsimportreversefromrest_framework.responseimportResponsefromutils.tokenimportcheck_tokenfromdjango.httpimportJsonResponse,HttpResponseRedirectfromyshop.modelsimportMyUsertry:fromdjango.utils.de......
  • 联想DM3000H存储用户配置
    vserverservicesname-serviceldapclientcreate    在SVM上创建LDAP客户端配置vserverservicesname-service ldap create 将该客户端配置与 SVM 关联vserverservicesname-service ldap create-vserverSVM_name-client-configclient_configuration-cl......
  • 20. 文本:文本框,密码框,文本域
    **文本:文本框,密码框,文本域**packageGUI;importjavax.swing.*;importjava.awt.*;//文本:文本框,密码框,文本域publicclassTest20{publicstaticvoidmain(String[]args){newJTextFieldDemo();newJPasswordFieldDemo();}}//文本框......
  • 搭建自己的私人密码库!Bitwarden 部署安装教程 (免费 1Password 替代品)
    常生活中我们几乎每个人都会拥有大量网站帐号,时间久远了密码很容易忘记。因此,像1Password等密码管理+同步+一键登录的工具成为了很多人的首选。然而1Password毕竟要付费,也有人会担心这类工具有隐私泄露的风险。其实,如果你有一台自己的VPS服务器,那么就能用开源的Bitwar......
  • 2023商用密码大会启幕,天翼云商用密码能力体系重磅亮相!
    8月9日,在国家密码管理局指导下,由中国密码学会作为支持单位,郑州市人民政府、河南省密码管理局主办的2023商用密码大会拉开帷幕。大会以“密码赋能美好发展”为主题,旨在推进商用密码创新驱动、前沿交流、产业对接、协同合作。作为参展企业,天翼云展示了云电脑、智能计算平台“云骁”、......
  • 【校招VIP】产品分析能力之用户画像出发
    考点介绍:用户行为和交互是产品经理能力的重要部分,在校招中,基于用户画像的分析题和设计题也是高频考点。一、考点题目1.爱奇艺中搜索关键词“音乐直播”,分析这个关键词可能的具体用户需求。解答:关于搜索关键词“音乐直播”的场景有以下几种可能......2.如果让你利用网络推广成......
  • oracle中怎样把一个用户的所有table的select权限授给另外一个用户
    1、双击桌面sqldeveloper软件图标启动软件。2、新建数据库连接,填写登录数据库信息并选择相应角色进行登录。3、登录成功后先查询出hr用户下所有的表名,可直接通过dba_tables来进行查询。4、把查询权限赋给测试用户的方法有两种,一种为当用户下的表比较少的情况下可以直接通过gran......
  • Mysql 忘记密码后重置密码
    1.以管理员身份进入cmd命令行输入netstopmysql停止mysql服务2.进入mysql安装的bin目录cdbin目录地址 3.输入mysqld--console--skip-grant-tables--shared-memory 此窗口不动在另开一个管理员权限cmd4.进入mysql安装bin目录5.输入mysql-uroot-p回车,不用输入密......
  • 设置root密码
    step-1打开终端(ctrl+alt+t),输入sudopasswdstep-2切换rootsuroot输入密码......
  • [转]Linux下,WinSCP普通用户登录sftp后切换到root权限 教程
    --------------------------------------------------------------------------------------------------------有这个需求的原因:为了提高系统安全性,禁用了root的ssh登录,但是又想使用sftp工具,如winscp,对root下的一些文件进行修改.下面这个方法注释掉了sudoers配置项Defa......