[Uniapp]用户登录界面记住多个账号密码功能的实现方法

一、前言

        在前一篇博客中,我们成功实现了用户登陆界面“记住密码”功能的实现,但是这样限制较大,即每台机子只能实现对一组账号密码的存储,如果存储第二组,则会把第一组的内容覆盖掉。在本篇文章中,我们将实现一台机子同时记住多个账号密码这一功能。

二、完整代码及最终成果展示

1.截图展示

2.完整代码展示

<template>
  <div>
    <form>
      <label for="username">账号:</label>
      <input v-model="username" type="text" id="username" name="username" />

      <label for="password">密码:</label>
      <input v-model="password" type="password" id="password" name="password" />

      <label for="remember">记住密码:</label>
      <input v-model="remember" type="checkbox" id="remember" name="remember" />

      <button type="button" @click="login">登录</button>

      <select v-model="selectedAccount" @change="selectAccount">
		  记住的账号密码
        <option v-for="account in savedAccounts" :key="account.username" :value="account.username">
          {{ account.username }}
        </option>
      </select>
	  
	  <button type="button" @click="deleteAccount">删除账户</button>
    </form>
  </div>
</template>

<script>
export default {
  data() {
    return {
      username: '',
      password: '',
      remember: false,
      savedAccounts: [],
      selectedAccount: '',
    };
  },
  mounted() {
    const savedAccounts = uni.getStorageSync('savedAccounts');

    if (savedAccounts) {
      this.savedAccounts = savedAccounts;
    }
  },
  methods: {
    login() {
      if (this.remember) {
        // 检查是否已经保存过相同的账号,如果是,则更新密码
        const existingAccountIndex = this.savedAccounts.findIndex(
          (account) => account.username === this.username
        );

        if (existingAccountIndex !== -1) {
          this.savedAccounts[existingAccountIndex].password = this.password;
        } else {
          // 否则,保存当前输入的账号密码到数组
          this.savedAccounts.push({
            username: this.username,
            password: this.password,
          });
        }

        // 保存数组到本地存储
        uni.setStorageSync('savedAccounts', this.savedAccounts);
      }

      // 在这里可以添加登录逻辑,比如向服务器发起登录请求
      // 使用this.selectedAccount来获取选择的账号
      // ...

      // 这里只是演示,显示一个提示信息
      uni.showToast({
        title: 'Login successful!',
        icon: 'success',
      });
    },
    selectAccount() {
      // 选择已保存的账号时,将对应的密码填充到输入框
      const selectedAccount = this.savedAccounts.find(
        (account) => account.username === this.selectedAccount
      );

      if (selectedAccount) {
        this.username = selectedAccount.username;
        this.password = selectedAccount.password;
      }
    },
    deleteAccount() {
      // 删除已保存的账号密码
      const indexToDelete = this.savedAccounts.findIndex(
        (account) => account.username === this.selectedAccount
      );

      if (indexToDelete !== -1) {
        this.savedAccounts.splice(indexToDelete, 1);

        // 更新本地存储
        uni.setStorageSync('savedAccounts', this.savedAccounts);

        // 清空选择的账号和密码输入框
        this.selectedAccount = '';
        this.username = '';
        this.password = '';
      }
    },
  },
};
</script>

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
当然可以帮你写一个 UniApp登录界面。以下是一个简单的示例: ```vue <template> <view class="login-container"> <text class="title">登录</text> <form @submit.prevent="login"> <view class="form-group"> <text class="label">用户名:</text> <input type="text" v-model="username" placeholder="请输入用户名" /> </view> <view class="form-group"> <text class="label">密码:</text> <input type="password" v-model="password" placeholder="请输入密码" /> </view> <button type="submit" class="login-button">登录</button> </form> </view> </template> <script> export default { data() { return { username: '', password: '', }; }, methods: { login() { // 处理登录逻辑,可以通过发送请求到后端进行验证 console.log('用户名:', this.username); console.log('密码:', this.password); }, }, }; </script> <style scoped> .login-container { max-width: 400rpx; margin: 0 auto; padding: 40rpx; } .title { font-size: 32rpx; font-weight: bold; margin-bottom: 40rpx; } .form-group { margin-bottom: 40rpx; } .label { font-size: 28rpx; } input { width: 100%; padding: 20rpx; border: 1rpx solid #ccc; } .login-button { padding: 20rpx; background-color: #007bff; color: #fff; border: none; cursor: pointer; } </style> ``` 这是一个简单的 UniApp 登录界面,使用了基本的视图组件和样式。与前面的 Vue 示例类似,当用户点击登录按钮时,会触发 `login` 方法,你可以在这个方法中处理登录逻辑,比如发送请求到后端进行验证。 请注意,UniApp 是一个跨平台框架,可以同时开发小程序、H5 网页、App 等应用。上面的示例是基于 UniApp 的 Vue 语法写的,你可以在一个 UniApp 项目中创建一个页面,并将以上代码粘贴到页面对应的 `.vue` 文件中进行使用。 希望对你有所帮助!如果还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值