添加登陆注册功能(vue简历编辑器)

着重记录下思路以及关键代码. 完整代码请点击这里

触发登录/注册机制

当我们点击保存的时候, 检测是否有用户登录, 若没有用户登录, 则弹出登录框. 按情况让用户选择登录或者注册功能.

 <button class="button" @click="onClickSave">保存</button>

onClickSave在vue实例app中的methods中定义:

methods: {
    onClickSave(){
          let currentUser = AV.User.current()
          if (!currentUser) {
            this.loginVisible = true
          } else {
            this.saveResume()
          }
        },
}

其中AV.User.current()是leanCloud官方提供的API. 用于检测当前用户. 若有当前用户则返回当前用户, 若没有当前用户则返回null. saveResume()在有用户时将编辑的信息保存给该用户.

methods: {
    saveResume(){
          let {id} = AV.User.current()
          let user = AV.Object.createWithoutData('User', id)
          user.set('resume', this.resume)
          user.save()
        }
}

loginVisible是app实例中的data数据. 当为true时显示登录框, 为false时隐藏. 默认为false. app实例中还有两个相关的数据, 分别为signUpVisible和currentUser:

data: {
    signUpVisible: false,
    currentUser: {
      id: undefined,
      email: undefined
    },
    login: {
      email: '',
      password: ''
    },
    signUp: {
      email: '',
      password: ''
    },
}

signUpVisible用于显示注册页面, currentUser用于存储用户信息.
我们可以在全局进行检测:

let currentUser = AV.User.current()
if (currentUser) {
  app.currenUser = currentUser
}

至于login和signUp则分别是在登录和注册时获取数据以进行下一步操作使用.

登录/注册页

下面时登录/注册页结构

<div v-show="loginVisible" class="login" v-cloak>
    <form class="form" @submit.prevent="onLogin">
      <h2>登录</h2>
      <button type="button" @click="loginVisible = false">关闭</button>
      <div class="row">
        <label>邮箱</label>
        <input type="text" v-model="login.email">
      </div>
      <div class="row">
        <label>密码</label>
        <input type="password" v-model="login.password">
      </div>
      <div class="actions">
        <button type="submit">提交</button>
        <a href="#" @click="signUpVisible = true; loginVisible = false">注册</a>
      </div>
    </form>
  </div>
  <div v-show="signUpVisible" class="signUp" v-cloak>
    <form class="form" @submit.prevent="onSignUp">
      <h2>注册</h2>
      <button type="button" @click="signUpVisible = false">关闭</button>
      <div class="row">
        <label>邮箱</label>
        <input type="text" v-model="signUp.email">
      </div>
      <div class="row">
        <label>密码</label>
        <input type="password" v-model="signUp.password">
      </div>
      <div class="actions">
        <button type="submit">提交</button>
        <a href="#" @click="signUpVisible=false; loginVisible=true;">登录</a>
      </div>
    </form>
  </div>

可以从上面的代码中看到登录页和注册页. 它们都用相似的代码部分:

<a href="#" @click="signUpVisible = true; loginVisible = false">注册</a>
//切换登录/注册页面
 <a href="#" @click="signUpVisible=false; loginVisible=true;">登录</a>

还有:

<button type="button" @click="loginVisible = false">关闭</button>
//关闭登录页面和注册页面 
<button type="button" @click="signUpVisible = false">关闭</button>

以及:

<input type="text" v-model="login.email">
<input type="password" v-model="login.password">
//登录时获取数据, 注册时获取数据
<input type="text" v-model="signUp.email">
<input type="password" v-model="signUp.password">

当表单提交时, 登录表单提交触发onLogin事件

<form class="form" @submit.prevent="onLogin">
//some codes
</form>

onLogin事件也在app实例中定义:

methods: {
    onLogin(e){
      AV.User.logIn(this.login.email, this.login.password).then( (user) => {
        this.currentUser.id = user.id
        this.currentUser.email = user.attributes.email
      },  (error) => {
        if (error.code === 211 && error.code === 210) {
          alert('邮箱和密码不匹配')
        }
      })
    },
}

注册表单提交时触发onSignUp事件, 都在methods对象中:

<form class="form" @submit.prevent="onSignUp">
//some codes
</form>
methods : {
    onSignUp(e){
          const user = new AV.User()
          user.setUsername(this.signUp.email)
          user.setPassword(this.signUp.password)
          user.setEmail(this.signUp.email)
          user.signUp().then(function (user) {
            console.log(user)
          }, function (error) {
          })
        },
}

既然有登录, 那么就有登出功能:

 <button class="button" @click="onLogout" >登出</button>
methods: {
    onLogout(e){
          AV.User.logOut();
          alert('注销成功')
          window.location.reload()
        },
}

参考:
当前用户: https://leancloud.cn/docs/leanstorage_guide-js.html#hash748191977
用户名密码注册: https://leancloud.cn/docs/leanstorage_guide-js.html#hash-452155059
更新对象: https://leancloud.cn/docs/leanstorage_guide-js.html#hash810954180

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很高兴能为您解答问题。 要使用Vue实现登录和注册功能,需要以下步骤: 1. 创建Vue项目 在命令行中运行以下命令来创建Vue项目: ``` vue create my-project ``` 2. 安装必要的依赖 使用以下命令来安装需要的依赖: ``` npm install vue-router axios ``` `vue-router`和`axios`是实现登录和注册功能的必要依赖。 3. 创建登录和注册组件 创建Login和Register组件。您可以使用以下命令来创建组件: ``` vue generate component Login vue generate component Register ``` 在Login和Register组件中,您可以使用Vue模板语法创建用于输入用户名和密码的表单组件。当用户提交表单时,您可以使用`axios`将表单数据发送到服务器进行验证。 4. 创建路由 将所创建的组件添加到路由中。在`src/router/index.js`文件中创建路由: ``` import Vue from 'vue' import VueRouter from 'vue-router' import Login from '@/components/Login' import Register from '@/components/Register' Vue.use(VueRouter) export default new VueRouter({ routes: [ { path: '/login', component: Login }, { path: '/register', component: Register } ] }) ``` 上述代码中,我们使用Vue Router来创建两个路由,并将Login和Register组件添加到路由中。 5. 在App.vue中使用路由 要在App.vue中显示Login和Registration组件,我们需要使用路由。 在App.vue文件中,您可以使用以下代码来实现此功能: ``` <template> <div id="app"> <router-view></router-view> </div> </template> <script> export default { name: 'App' } </script> ``` 6. 启动应用程序 现在您已经创建了登录和注册功能Vue应用程序,您可以使用以下命令来启动应用程序: ``` npm run serve ``` 现在,您可以在浏览器中打开应用程序,并使用以下URL路径访问登录和注册页面: ``` http://localhost:8080/#/login http://localhost:8080/#/register ``` 希望这个回答对您有所帮助。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值