当前位置:   article > 正文

Vue登录第1版_vue验证用户名和密码

vue验证用户名和密码

        在D:\vue-project文件夹中创建了一个名称为“lighthouse-vue”的Vue项目,下面在这个项目的基础上,完成该项目的登录界面,这里称为Vue登录第1版。

        Vue登录第1版采用最简单的形式进行登录认证,具体是:

        使用Vue完成登录界面,用户只需要输入用户名和密码,并事先给出用户名为“admin”和密码为“123456”,然后采用JS进行登录验证,如果用户输入的用户名和密码与事先设置的用户名和密码相等,则登录成功;如果都为空,提示输入用户名和密码;如果不相等,则提示用户名或密码错误。

        整个登录暂不涉及后端代码。

      2.1.1  创建全局样式表

        为了让登录界面不太丑陋,且居中显示,创建一个全局样式表来管理登录界面的样式。具体如下:

        在src\assets目录下,创建一个css文件夹,用于放置css文件夹或目录。对于全局样式表的css文件,可以取名为:global.css。在css目录下创建一个global.css文件。

        程序清单2.1global.css全局样式表的代码。

        程序清单2.1  global.css。

  1. /* 全局样式表 */
  2. html,body,#app{
  3. height: 100%;
  4. margin: 0;
  5. padding: 0;
  6. min-width: none;
  7. background: #ececf4;
  8. }
   程序清单2.1说明省略。

      2.1.2  创建登录视图

        在src目录下,创建一个views视图目录,用于放置视图文件。在views目录下创建一个登录的视图文件Login.vue,完成登录界面的实现。

        程序清单2.2Login.vue的代码。

        程序清单2.2  Login.vue。

  1. <template lang="">
  2. <div class="login" id="login">
  3. <div class="input-wrap">
  4. <label for="male">账 号:</label>
  5. <input type="text" v-model="username" placeholder="请输入账号"/>
  6. </div>
  7. <div class="input-wrap">
  8. <label for="male">密 码:</label>
  9. <input type="password" v-model="password" placeholder="请输入密码"/>
  10. </div>
  11. <div class="input-wrap">
  12. <!-- <button v-on:click="login">登录账号</button>&nbsp;&nbsp; -->
  13. <button @click="login">登录</button>&nbsp;&nbsp;
  14. <button @click="login">注册</button>
  15. </div>
  16. </div>
  17. </template>
  18. <script>
  19. export default {
  20. data () {
  21. return {
  22. username: '',
  23. password: ''
  24. }
  25. },
  26. methods: {
  27. login () {
  28. const {username, password} = this
  29. // 等同于如下语句:
  30. // const username = this.username
  31. // const password = this.password
  32. if (username === 'admin' && password === '123456') {
  33. alert("登录成功!")
  34. } else if(username.length == 0 || password.length == 0) {
  35. alert('请输入用户名或密码!')
  36. }else{
  37. alert('登录失败!')
  38. }
  39. }
  40. }
  41. }
  42. </script>
  43. <style>
  44. .login {
  45. position: absolute;
  46. top: 0;
  47. right: 0;
  48. bottom: 0;
  49. left: 0;
  50. width: 300px;
  51. height: 80px;
  52. padding:10px;
  53. margin:auto;
  54. /*margin: 20% auto;*/
  55. }
  56. .input-wrap{
  57. margin: 20px auto;
  58. }
  59. </style>

  程序清单2.2说明省略。

     2.1.3  创建路由目录

        在src目录下创建一个router文件夹,用于路由文件。这里的思想是把 routes数组 拆分成一个 单独的js文件,这样看着简洁也方便维护。

        在该文件夹下创建一个index.js文件。

        程序清单2.3index.js文件的代码。

        程序清单2.3  index.js。

  1. import Vue from 'vue'
  2. import VueRouter from 'vue-router'
  3. // 导入路由
  4. import Login from '@/views/Login.vue'
  5. Vue.use(VueRouter)
  6. const routes = [
  7. { path: '/', redirect: '/login' },
  8. { path: '/login', component: Login }
  9. ]
  10. const router = new VueRouter({
  11. routes
  12. })
  13. // 挂载路由导航守卫
  14. router.beforeEach((to, from, next) => {
  15. // 如果访问的是login页面 则直接放行
  16. if (to.path === '/login') return next()
  17. // 获取token
  18. const tokenStr = window.sessionStorage.getItem('token')
  19. // 判断有没有拿到token,如果没有则强制跳转到login页面
  20. if (!tokenStr) return next('/login')
  21. // 否则,拿到token则直接放行
  22. next()
  23. })
  24. export default router

程序清单2.3说明如下。

       第1行:导入vue.js文件。其完整的写法是:

import Vue from "../node_modules/vue/dist/vue.js"

该篇博客有论述:import Vue from 'vue' 发生了什么 - 精灵W的博客 - 博客园

       第2行:导入vue-router实现路由管理。

https://blog.csdn.net/sinat_17775997/article/details/80688397

https://router.vuejs.org/zh/guide/#javascript

https://www.cnblogs.com/dengyao-blogs/p/11562257.html

     2.1.4  修改App.vue

        在src目录下修改App.vue文件。

        程序清单2.4App.vue文件的代码。

        程序清单2.4  App.vue。

  1. <template>
  2. <div id="app">
  3. <!-- 路由占位符 -->
  4. <router-view></router-view>
  5. </div>
  6. </template>
  7. <script>
  8. export default {
  9. }
  10. </script>
  11. <style>
  12. #app {
  13. font-family: Avenir, Helvetica, Arial, sans-serif;
  14. -webkit-font-smoothing: antialiased;
  15. -moz-osx-font-smoothing: grayscale;
  16. text-align: center;
  17. color: #2c3e50;
  18. margin-top: 60px;
  19. }
  20. </style>

     2.1.5  修改main.js文件

       src目录下修改main.js文件。

       程序清单2.5main.js文件的代码。

       程序清单2.5  main.js。

  1. import Vue from 'vue'
  2. import App from './App.vue'
  3. import router from './router'
  4. //等效于:
  5. // import router from './router/index.js'
  6. // 导入全局样式表
  7. import '@/assets/css/global.css'
  8. // 设置为“false” 用于关闭生产模式下给出的提示
  9. Vue.config.productionTip = false
  10. new Vue({
  11. router,
  12. render: h => h(App),
  13. }).$mount('#app')

    2.1.6  运行

     在终端中运行命令:npm run serve,显示如下信息:

  1. Windows PowerShell
  2. 版权所有 (C) Microsoft Corporation。保留所有权利。
  3. 尝试新的跨平台 PowerShell https://aka.ms/pscore6
  4. PS D:\vue-project> cd .\lighthouse-vue\
  5. PS D:\vue-project\lighthouse-vue> npm run serve
  6. > lighthouse-vue@0.1.0 serve D:\vue-project\lighthouse-vue
  7. > vue-cli-service serve
  8.  INFO  Starting development server...
  9. 98% after emitting CopyPlugin
  10.  DONE  Compiled successfully in 1094ms                                                                                                   下午8:16:10
  11. App running at:
  12.   - Local:   http://localhost:8080/
  13.   - Network: http://192.168.0.103:8080/
  14.   Note that the development build is not optimized.
  15.   To create a production build, run npm run build.

       该信息显示编译成功,并给出了打开登录页面的url地址:http://localhost:8080/

       在浏览器上输入该地址,打开如图2.1所示登录界面。

2.1.7 增加首页文件index.vue

       前面登录成功后,给出了登录成功的提示。现在将其修改为登录成功后,跳转一个首页文件,一般首页文件约定俗成命名为index,这里命名为:index.vue。
       在views目录下创建灯塔管理系统首页文件index.vue。
       index.vue的代码如下:

  1. <template>
  2. <div>
  3. <h3>欢迎使用灯塔管理系统</h3>
  4. <p>到灯塔去...</p>
  5. </div>
  6. </template>

2.1.8 修改index.js文件

       为了能够找到index.vue,需要在router目录下修改index.js配置路由的路径,具体是增加:
     (1)导入路由:import Index from '@/views/index.vue'
     (2)配置路由: { path: '/index', component: Index }
       另外,对其中对获取token有关语句进行注释,关于token在后面的登录版本中进行讲解。
       index.js完整代码如下:

  1. import Vue from 'vue'
  2. import VueRouter from 'vue-router'
  3. // 导入路由
  4. import Login from '@/views/Login.vue'
  5. import Index from '@/views/index.vue'
  6. Vue.use(VueRouter)
  7. // 在创建的 routes 对象中, path 配置了路由的路径,component 配置了映射的组件
  8. const routes = [
  9. { path: '/', redirect: '/login' },
  10. { path: '/login', component: Login },
  11. { path: '/index', component: Index }
  12. ]
  13. const router = new VueRouter({
  14. routes
  15. })
  16. // 挂载路由导航守卫
  17. router.beforeEach((to, from, next) => {
  18. // 如果访问的是login页面 则直接放行
  19. if (to.path === '/login') return next()
  20. // 获取token
  21. // const tokenStr = window.sessionStorage.getItem('token')
  22. // 判断有没有拿到token,如果没有则强制跳转到login页面
  23. // if (!tokenStr) return next('/login')
  24. // 否则,拿到token则直接放行
  25. next()
  26. })
  27. // export default routers 必须写在文件底部,而且后面还需要接一空行,否则无法通过 ESlint 语法验证
  28. export default router

2.1.9 修改Login.vue增加路由跳转

       在views目录下,修改Login.vue文件,主要是在原来Login.vue的第34行下面增加语句:
       this.$router.push({path: '/index'})
       修改后的Login.vue完整代码如下:

  1. <template lang="">
  2. <div class="login" id="login">
  3. <div class="input-wrap">
  4. <label for="male">账 号:</label>
  5. <input type="text" v-model="username" placeholder="请输入账号"/>
  6. </div>
  7. <div class="input-wrap">
  8. <label for="male">密 码:</label>
  9. <input type="password" v-model="password" placeholder="请输入密码"/>
  10. </div>
  11. <div class="input-wrap">
  12. <!-- <button v-on:click="login">登录账号</button>&nbsp;&nbsp; -->
  13. <button @click="login">登录</button>&nbsp;&nbsp;
  14. <button @click="login">注册</button>
  15. </div>
  16. </div>
  17. </template>
  18. <script>
  19. export default {
  20. data () {
  21. return {
  22. username: '',
  23. password: ''
  24. }
  25. },
  26. methods: {
  27. login () {
  28. const {username, password} = this
  29. // 等同于如下语句:
  30. // const username = this.username
  31. // const password = this.password
  32. if (username === 'admin' && password === '123456') {
  33. // alert("登录成功!")
  34. this.$router.push({path: '/index'})
  35. } else if(username.length == 0 || password.length == 0) {
  36. alert('请输入用户名或密码!')
  37. }else{
  38. alert('登录失败!')
  39. }
  40. }
  41. }
  42. }
  43. </script>
  44. <style>
  45. .login {
  46. position: absolute;
  47. top: 0;
  48. right: 0;
  49. bottom: 0;
  50. left: 0;
  51. width: 300px;
  52. height: 80px;
  53. padding:10px;
  54. margin:auto;
  55. /*margin: 20% auto;*/
  56. }
  57. .input-wrap{
  58. margin: 20px auto;
  59. }
  60. </style>

2.1.10 运行

       运行的截图如下:

       登录成功后运行截图如下:

       至此,灯塔管理系统登录第1版告一段落。

       九层之台,起于垒土。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/运维做开发/article/detail/746635
推荐阅读
相关标签
  

闽ICP备14008679号