Vben admin 实现登录记住密码

安装插件

npm i js-cookie

在登陆文件中引入

import Cookies from "js-cookie";

Dom部分

<FormItem>
  <!-- 记住密码按钮 -->
   <Checkbox v-model:checked="remember" size="small">
     {{ t('sys.login.rememberMe') }}
   </Checkbox>
 </FormItem>

Ts部分

1、定义字段

// 定义记住密码开关
const remember = ref(false);
// 定义用户名和密码
const formData = reactive({
    account: '',
    password: '',
  });

2、页面加载调用记住密码方法

 onMounted(() => {
    getCookie()
  })

3、 获取Cookie 记住用户名及密码


  const getCookie = () => {
    const username = Cookies.get("username");
    const password = Cookies.get("password");
    const rememberMe = Cookies.get('rememberMe')
    
    formData.account = username === undefined ? formData.account : username
    formData.password = password === undefined ? formData.password : password
    remember.value = rememberMe === undefined ? false : Boolean(rememberMe)
  }

4、登录操作


async function handleLogin() {
    const data = await validForm();
    if (!data) return;
    try {
      loading.value = true;
      //  Cookies.set 存储用户名和密码  参数1 key值  参数2 value  参数3有效时间
      if (remember.value) {
        Cookies.set("username", data.account, { expires: 30 });
        Cookies.set("password", data.password, { expires: 30 });
        Cookies.set('rememberMe', remember.value, { expires: 30 });
      } else {
        Cookies.remove("username");
        Cookies.remove("password");
        Cookies.remove('rememberMe');
      }

      const userInfo = await userStore.login({
        password: data.password,
        username: data.account,
        // code: data.code,
        // uuid: unref(uuid),
        mode: 'none', //不要默认的错误提示
      });
      if (userInfo) {
        notification.success({
          message: t('sys.login.loginSuccessTitle'),
          description: `${t('sys.login.loginSuccessDesc')}: ${userInfo.realName}`,
          duration: 3,
        });
      }
    } catch (error) {
      // refreshImg();
      createErrorModal({
        title: t('sys.api.errorTip'),
        content: (error as unknown as Error).message || t('sys.api.networkExceptionMsg'),
        getContainer: () => document.body.querySelector(`.${prefixCls}`) || document.body,
      });
    } finally {
      loading.value = false;
    }
  }

注意:
Ant Design Vue表单自动填充账号密码问题
问题:
打开表单账号密码会自动填充

原因:
现代浏览器实现了内建的密码管理功能:当用户在一个网站上输入了用户名和密码,浏览器会为用户提供记忆功能。当用户再次访问这个网站时,浏览器使用保存的值自动填写登录字段

解决办法:
在密码框加入了autocomplete=“new-password”,阻止密码字段的自动填充,写入这个之后账号也跟着不填充了。

<FormItem name="password" class="enter-x">
   <InputPassword
     autocomplete="new-password"
     size="large"
     visibilityToggle
     v-model:value="formData.password"
     :placeholder="t('sys.login.password')"
   />
 </FormItem>
### vben admin 5.0 登录报错解决方案 对于vben admin 5.0登录时遇到的错误,可以采取一系列措施来排查并解决问题。考虑到项目依赖关系复杂以及版本兼容性问题可能导致构建或运行时出现问题。 #### 检查环境配置 确保本地开发环境中Node.jsnpm版本与项目需求相匹配非常重要。如果使用的Node.js或npm版本过低或过高都可能引发各种未知错误。建议查看项目的`package.json`文件中的engines字段了解推荐的Node.js版本范围[^1]。 ```json { "engines": { "node": ">=14.0.0", "npm": "^7.0.0" } } ``` #### 更新依赖包 有时旧版依赖可能存在漏洞或是不再支持某些功能特性,这会影响应用正常工作。执行如下命令可尝试更新所有依赖到最新稳定版: ```bash npm install --save-dev @vue/cli-service@latest eslint-plugin-vue@latest vue-template-compiler@latest npm update ``` #### 清理缓存重试 NPM缓存损坏也可能造成安装失败等问题,在这种情况下清理全局缓存再重新安装依赖往往能有效缓解此类状况。 ```bash npm cache clean --force rm -rf node_modules/ rm package-lock.json yarn.lock npm install ``` #### 查看控制台输出的日志信息 当应用程序启动后无法完成预期操作(如登录),应当立即关注浏览器开发者工具Console面板内的警告提示语句;同时服务器端也会记录下请求处理过程中的异常情况,通过查阅这些日志有助于快速定位具体原因所在。 #### 配置项验证 确认`.env.*`系列环境变量配置无误,特别是涉及到身份认证部分的关键参数设置是否正确,比如API接口地址、密钥等敏感数据是否有遗漏或者拼写失误的情况发生。 #### 测试账号权限审查 假如以上步骤均未发现明显缺陷,则有必要进一步调查测试所用账户本身是否存在权限不足的问题。联系系统管理员获取更多信息关于该用户的授权状态及其所属角色拥有的访问级别详情。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值