¼ÓÈëÊÕ²Ø | ÉèΪÊ×Ò³ | »áÔ±ÖÐÐÄ | ÎÒҪͶ¸å Àî´óͬ £¨https://www.lidatong.com.cn/£©- ¿Æ¼¼¡¢½¨Õ¾¡¢¾­Ñé¡¢ÔÆ¼ÆËã¡¢5G¡¢´óÊý¾Ý,Õ¾³¤Íø!
µ±Ç°Î»Ö㺠Ê×Ò³ > °Ù¿Æ > ÕýÎÄ

Vueѧϰ֮·֮µÇ¼ע²áʵÀý´úÂë

·¢²¼Ê±¼ä£º2020-12-17 02:53:48 ËùÊôÀ¸Ä¿£º°Ù¿Æ À´Ô´£ºÍøÂçÕûÀí
µ¼¶Á£º¸ù¾ÝVue.js + Element UI + MongoDB½øÐпª·¢ P1 °²×°Vue-CLI Vue.jsÎĵµ ÀûÓÃVue.jsÌṩµÄÒ»¸ö¹Ù·½ÃüÁîÐй¤¾ß Vue.js Ö÷ҪĿ¼½á¹¹ Íê³Éºó¾Í¿ÉÒÔÔÚ/src/components/*.vueÄ£°åÖÐд´úÂ룬ctrl+s±£´æºóÒ³Ãæ»á×Ô¶¯Ë¢Ð£¬ÈôÎÞЧÇë¼ì²é¶Ë¿ÚÊÇ·ñ±»Õ¼Óà P2 °²×°Eleme

¸ù¾ÝVue.js + Element UI + MongoDB½øÐпª·¢

P1 °²×°Vue-CLI

Vue.jsÎĵµ

ÀûÓÃVue.jsÌṩµÄÒ»¸ö¹Ù·½ÃüÁîÐй¤¾ß

Vue.js Ö÷ҪĿ¼½á¹¹

Íê³Éºó¾Í¿ÉÒÔÔÚ/src/components/*.vueÄ£°åÖÐд´úÂ룬ctrl+s±£´æºóÒ³Ãæ»á×Ô¶¯Ë¢Ð£¬ÈôÎÞЧÇë¼ì²é¶Ë¿ÚÊÇ·ñ±»Õ¼ÓÃ

P2 °²×°Element UI

Element UIÎĵµ

Íê³ÉºóÔÚmain.jsÖÐÌí¼ÓÈçÏ´úÂëÍêÕûÒýÈëElement,¾ÍÄÜÔÚ/src/components/*.vueÄ£°åÖÐʹÓÃElement UIµÄ×é¼þ

Vue.use(ElementUI)

P3 µÇ¼ע²á¹¦ÄÜ

˼·

  1. µÃÒæÓÚvueµÄÊý¾ÝË«Ïò°ó¶¨£¬ÈÃÎÒÃDz»ÓòÙ×÷DOM¾ÍÄܱßÊäÈë±ßÑéÖ¤×Ö·û´®ºÏ·¨ÐÔ
  2. ÀûÓÃaxiosʵÏÖǰºó¶ËµÄÊý¾Ý½»»¥
  3. ÀûÓÃjsonwebtokenʵÏֵǼÑéÖ¤£¬½áºÏvue-routerµÄbeforeEnterµ¼º½¹³×ÓÔÚÌø×ªÇ°À¹½ØÑéÖ¤access_tokenµÄÓÐЧÐÔ

ÑéÖ¤ÊäÈëµÄÕ˺źÍÃÜÂëÊÇ·ñºÏ·¨(ÀûÓÃelementuiµÄform±íµ¥)

{ var pattern = /^[wu4e00-u9fa5]{3,10}$/g if (value === '') { cb(new Error('ÇëÊäÈëÓû§Ãû')) } else if (!pattern.test(value)) { cb(new Error('ÇëÊäÈë3-10¸ö×Öĸ/ºº×Ö/Êý×Ö/Ï»®Ïß')) } else { cb() } } var validatePwd = (rule,cb) => { var pattern = /^S{3,20}$/g if (value === '') { cb(new Error('ÇëÊäÈëÃÜÂë')) } else if (!pattern.test(value)) { cb(new Error('ÇëÊäÈë3-20¸ö·Ç¿Õ°××Ö·û')) } else { if (this.registerForm.checkPwd !== '') { this.$refs.registerForm.validateField('checkPwd') } cb() } } var validateCheckPwd = (rule,cb) => { if (value === '') { cb(new Error('ÇëÔÙ´ÎÊäÈëÃÜÂë')) } else if (value !== this.registerForm.pwd) { cb(new Error('Á½´ÎÊäÈëÃÜÂë²»Ò»ÖÂ!')) } else { cb() } } return { registerForm: { userName: '',pwd: '',checkPwd: '' },registerRule: { userName: [ { validator: validateUser,trigger: 'blur' } ],pwd: [ { validator: validatePwd,checkPwd: [ { validator: validateCheckPwd,trigger: 'blur' } ] } } },methods: { submitForm (formName) { this.$refs[formName].validate((valid) => { if (valid) { ... } else { return false } }) } } }

ÀûÓÃaxiosʵÏÖÓëºó¶ËÊý¾ÝµÄ½»»¥

axiosÎĵµ

{ console.log(res.data) if (res.data.code === 0) { this.$message({ showClose: true,message: '×¢²á³É¹¦',type: 'success' }) router.push({name: 'Login'}) } else { this.$message({ showClose: true,message: '×¢²áʧ°Ü',type: 'error' }) } })

ʹÓà JSON WEB Tokens ʵÏֵǼÑéÖ¤

ÓÉÓÚnodeºó¶ËºÍvueǰ¶ËÊÇÁ½¸ö²»Í¬µÄ¶Ë¿Ú£¨:3000ºÍ:8090£©£¬¶ÔÓÚ¿çÓò£¨ÎÒÒѾ­ÔÊÐí¿çÓò·ÃÎÊ£©£¬sessionºÍcookie¾Í²»ÒªÏëÁË£¬²¢²»ÊÇÉèÖÃÒ»¸öʲô¾ÍÄܽâ¾öµÄ£¬»¨ÁËÒ»ÏÂÎç²Å·¢ÏÖ£¬ËùÒÔʹÓÃÁËtokenÀ´×öapiÇëÇ󣬶øÇÒ»¹ÄܼÓÃÜ¡£

ºó¶Ë´¦ÀíµÇ¼

¼ÓÃܺóµÄentries.access_token:

ǰ¶Ë»ñÈ¡µ½ºó¶Ë´«µÝ¹ýÀ´µÄaccess_token£¬½«Æä±£´æ½øsessionStorage¡£Õâ¸öµ¼º½¹³×ÓÎÒ·ÅÔÚ/p·ÓɶÀÏíµÄ¹³×ÓÏ£¬ÔÚ½øÈë/p/:idǰÀ¹½Øµ¼º½£¬Í¨¹ýaxiosÏòºó¶Ë´«µÝaccess_token£¬¸ù¾Ýºǫ́·µ»ØÖµÅжÏÊÇ·ñÒѾ­µÇ¼¡£

µ¼º½¹³×Ó´«ËÍÃÅ

×¢Òârouter.beforeEachÈ·±£Òªµ÷ÓÃnext·½·¨£¬·ñÔò¹³×ӾͲ»»á±» resolved£¬µ«after¹³×ÓûÓÐ next·½·¨£¬²»Äܸı䵼º½

{ let pattern = /^(/p)/g let token = sessionStorage.getItem('accessToken') //±£´ætoken if (pattern.test(to.path)) { Axios.post('http://localhost:3000/isLogin',{access_token: token}) .then(res => { if (res.data.code === 0) { console.log(from) console.log(to) next() } else { router.push({name: 'Login'}) next() } }) .catch(err => { console.log(err) }) } }

ºó¶Ë´¦ÀítokenÊÇ·ñºÏ·¨

ºǫ́»ñÈ¡µ½´«µÝµÄtokenÖµ£¬ÀûÓÃjwt.decode(token,jwtTokenSecret)¶ÔÆä½âÂ룬½âÂë½á¹û¾ÍÊǵ±³õÎÒÃǼÓÃܵĶÔÏó{iss,exp}£¬Ê×Ïȸù¾ÝexpÅжÏtokenÊÇ·ñ¹ýÆÚ£¬È»ºó¸ù¾Ý_id²éѯÊý¾Ý¿âÊÇ·ñÓÐÕâ¸öÓû§

Ô´Âë

ÒÔÉϾÍÊDZ¾ÎĵÄÈ«²¿ÄÚÈÝ£¬Ï£Íû¶Ô´ó¼ÒµÄѧϰÓÐËù°ïÖú£¬Ò²Ï£Íû´ó¼Ò¶à¶àÖ§³Ö±à³ÌÖ®¼Ò¡£

£¨±à¼­£ºÀî´óͬ£©

¡¾ÉùÃ÷¡¿±¾Õ¾ÄÚÈݾùÀ´×ÔÍøÂ磬ÆäÏà¹ØÑÔÂÛ½ö´ú±í×÷Õ߸öÈ˹۵㣬²»´ú±í±¾Õ¾Á¢³¡¡£ÈôÎÞÒâÇÖ·¸µ½ÄúµÄȨÀû£¬Ç뼰ʱÓëÁªÏµÕ¾³¤É¾³ýÏà¹ØÄÚÈÝ!

    ÍÆ¼öÎÄÕÂ
      ÈȵãÔĶÁ