国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

演示Vue實現(xiàn)記住賬號密碼功能的思路和代碼

3403771864 / 781人閱讀

  實現(xiàn)思路:

  情景:在用戶登錄時若勾選“記住我”功能選項,則將登錄名和密碼(加密后)存入本地緩存,下次登錄頁面加載時自動獲取保存好的賬號和密碼(需解密),回顯到登錄輸入框中。

  在本地緩存可以用cookies、localStorage、sessionStorage,但這些都有很多不同的差異,不多說廢話。直接說使用我們的,在未設(shè)置過期時間,關(guān)閉瀏覽器窗口后就被清除了,顯然是符合我們開發(fā)需求的,localStorage呢除非主動清除localStorage里的信息,否則將永遠(yuǎn)存在,關(guān)閉瀏覽器窗口后下次啟動任然存在,這個也是符合我們開發(fā)需求的,根據(jù)業(yè)務(wù)需求我選擇的是localStorage。

1.png


  <el-form
  ref="loginForm"
  :model="loginForm"
  :rules="loginRules"
  class="login-form"
  auto-complete="on"
  label-position="left"
  >
  <div class="user-login">
  <div class="title-container">
  <span class="title">用戶登錄</span>
  <span class="annotation">BACKGROUND LOGIN</span>
  </div>
  <div class="core-container">
  <el-form-item prop="username">
  <span class="svg-container">
  <i class="icon el-icon-user" />
  </span>
  <el-input
  ref="username"
  v-model="loginForm.username"
  placeholder="請輸入用戶名稱"
  name="username"
  type="text"
  tabindex="1"
  auto-complete="on"
  />
  </el-form-item>
  <el-form-item prop="password">
  <span class="svg-container">
  <i class="icon el-icon-lock" />
  </span>
  <el-input
  :key="passwordType"
  ref="password"
  v-model="loginForm.password"
  :type="passwordType"
  placeholder="請輸入密碼"
  name="password"
  tabindex="2"
  auto-complete="on"
  @keyup.enter.native="handleLogin"
  />
  <span class="show-pwd" @click="showPwd">
  <img
  src="@/icons/png/pawyc.png"
  v-if="passwordType === 'password'"
  />
  <i class="el-icon-view" v-else></i>
  </span>
  </el-form-item>
  <el-checkbox
  v-model="checked"
  label="記住密碼"
  name="type"
  ></el-checkbox>
  </div>
  <el-button
  class="loginBtn"
  :loading="loading"
  type="primary"
  style="width: 100%; margin-bottom: 30px"
  @click.native.prevent="handleLogin(loginForm)"
  >立即登錄</el-button
  >
  </div>
  </el-form>

  記住賬號密碼實現(xiàn)流程

  密碼加密:為提高安全性,密碼存儲前需進(jìn)行加密處理。目前加密方式有很多種,我這里選用了base64。

  npm安裝base64依賴

  //安裝
  npm install --save js-base64
  //引入
  const Base64 = require("js-base64").Base64

 

  const Base64 = require('js-base64').Base64
  export default {
  data() {
  return {
  loginForm: {
  username: '',
  password: '',
  },
  checked: false,
  };
  },
  mounted () {
  let username = localStorage.getItem('username')
  if (username) {
  this.loginForm.username = localStorage.getItem('username')
  this.loginForm.password = Base64.decode(localStorage.getItem('password'))// base64解密
  this.checked = true
  }
  },
  // 立即登錄
  handleLogin (loginForm) {
  this.$refs.loginForm.validate(async (isOK) => {
  if (isOK) {
  /* ------ 賬號密碼的存儲 ------ */
  if (this.checked) {
  let password = Base64.encode(this.loginForm.password) // base64加密
  localStorage.setItem('username', this.loginForm.username)
  localStorage.setItem('password', password)
  } else {
  localStorage.removeItem('username')
  localStorage.removeItem('password')
  }
  try {
  let encrypt = new JSEncrypt() // 新建JSEncrypt對象
  encrypt.setPublicKey(this.publicKey) // 設(shè)置公鑰
  let password = encrypt.encrypt(this.loginForm.password) // 對密碼進(jìn)行加密
  this.loading = true
  await this['user/login']({
  username: this.loginForm.username,
  password: password,
  captcha: this.captchaKey + ':' + this.loginForm.captcha,
  isRememberMe: this.loginForm.isRememberMe,
  isScanLogin: this.loginForm.isScanLogin ? 1 : 0
  }).then((res) => {
  this.$router.push(
  {
  path:'/transitionPage',
  query:{
  username:this.loginForm.username
  }
  }
  )
  })
  } catch (error) {
  this.$message.error('用戶名或密碼錯誤!')
  } finally {
  // 不論執(zhí)行try 還是catch 都會執(zhí)行finally 去關(guān)閉轉(zhuǎn)圈
  this.loading = false
  }
  }
  })
  }
  },
  };

2.png

  看到上面這個就知道已經(jīng)完成我們的需求了

  這個需求的核心代碼我標(biāo)一下

  /* ------ 賬號密碼的存儲 ------ */
  if (this.checked) {
  let password = Base64.encode(this.loginForm.password) // base64加密
  localStorage.setItem('username', this.loginForm.username)
  localStorage.setItem('password', password)
  } else {
  localStorage.removeItem('username')
  localStorage.removeItem('password')
  }

     相關(guān)內(nèi)容已講述完畢,歡迎大家后續(xù)更多關(guān)注。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/128197.html

相關(guān)文章

  • vue項目實現(xiàn)記住密碼到cookie功能(附源碼)

    摘要:這里不做加密功能源碼鏈接項目實現(xiàn)表單登錄頁保存賬號和密碼到功能覺得對你有幫助的話,下哦。 showImg(https://segmentfault.com/img/remote/1460000013052745?w=443&h=335); 實現(xiàn)功能: 1.記住密碼勾選,點登陸時,將賬號和密碼保存到cookie,下次登陸自動顯示到表單內(nèi) 2.不勾選,點登陸時候則清空之前保存到cooki...

    zzir 評論0 收藏0
  • vue中使用cookiescrypto-js實現(xiàn)記住密碼加密

    摘要:最后要在狗子函數(shù)內(nèi)判斷用戶是否記住了密碼來執(zhí)行相關(guān)的操作判斷是否記住密碼注意這里的是字符串格式,因為存進(jìn)中會變成判斷是否記住密碼最后,界面貼上,其中是記住密碼按鈕的值,是第一個框的值,就是第二個框的值啦。 不多BB,搞快、搞快、 使用crypto-js加解密 第一步,安裝 npm install crypto-js 第二步,在你需要的vue組件內(nèi)import import Crypto...

    khs1994 評論0 收藏0
  • 手摸手,帶你用vue擼后臺 系列二(登錄權(quán)限篇)

    摘要:我們將登錄按鈕上綁上事件,點擊登錄之后向服務(wù)端提交賬號和密碼進(jìn)行驗證。所以前端和后端權(quán)限的劃分是不太一致。側(cè)邊欄最后一個涉及到權(quán)限的地方就是側(cè)邊欄,不過在前 完整項目地址:vue-element-admin 系列文章: 手摸手,帶你用vue擼后臺 系列一(基礎(chǔ)篇) 手摸手,帶你用vue擼后臺 系列二(登錄權(quán)限篇) 手摸手,帶你用vue擼后臺 系列三 (實戰(zhàn)篇) 手摸手,帶你用vu...

    不知名網(wǎng)友 評論0 收藏0
  • Growth Hacker 奇技淫巧一則:零授權(quán),抓取新浪微博任何用戶微博內(nèi)容

    摘要:由于我需要獲取普通用戶的微博內(nèi)容,因此還要想辦法繼續(xù)繞。默認(rèn)是勾上的,也即是說微博團(tuán)隊主觀上是希望用戶勾上這個,從而借助判斷來提高登錄安全性的。我遂果斷取消勾選該選項,輸入任何一個自己的微博賬號密碼,點擊登錄。 有時或基于以下凡此種種需求,我們會想要去抓取新浪微博的內(nèi)容: 產(chǎn)品冷啟動,導(dǎo)入外部數(shù)據(jù),而非從頭積累; 通過大數(shù)據(jù)+語義分析獲取用戶興趣行為偏好,提供智能推薦; 監(jiān)控微博輿...

    DevWiki 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<