Vueѧϰ֮·֮µÇ¼ע²áʵÀý´úÂë
¸ù¾ÝVue.js + Element UI + MongoDB½øÐпª·¢ P1 °²×°Vue-CLIVue.jsÎĵµ ÀûÓÃVue.jsÌṩµÄÒ»¸ö¹Ù·½ÃüÁîÐй¤¾ß Vue.js Ö÷ҪĿ¼½á¹¹Íê³Éºó¾Í¿ÉÒÔÔÚ/src/components/*.vueÄ£°åÖÐд´úÂ룬ctrl+s±£´æºóÒ³Ãæ»á×Ô¶¯Ë¢Ð£¬ÈôÎÞЧÇë¼ì²é¶Ë¿ÚÊÇ·ñ±»Õ¼Óà P2 °²×°Element UIElement UIÎĵµ Íê³ÉºóÔÚmain.jsÖÐÌí¼ÓÈçÏ´úÂëÍêÕûÒýÈëElement,¾ÍÄÜÔÚ/src/components/*.vueÄ£°åÖÐʹÓÃElement UIµÄ×é¼þ Vue.use(ElementUI)
P3 µÇ¼ע²á¹¦ÄÜ˼·
ÑéÖ¤ÊäÈëµÄÕ˺źÍÃÜÂëÊÇ·ñºÏ·¨(ÀûÓÃ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¾ÎĵÄÈ«²¿ÄÚÈÝ£¬Ï£Íû¶Ô´ó¼ÒµÄѧϰÓÐËù°ïÖú£¬Ò²Ï£Íû´ó¼Ò¶à¶àÖ§³Ö±à³ÌÖ®¼Ò¡£ £¨±à¼£ºÀî´óͬ£© ¡¾ÉùÃ÷¡¿±¾Õ¾ÄÚÈݾùÀ´×ÔÍøÂ磬ÆäÏà¹ØÑÔÂÛ½ö´ú±í×÷Õ߸öÈ˹۵㣬²»´ú±í±¾Õ¾Á¢³¡¡£ÈôÎÞÒâÇÖ·¸µ½ÄúµÄȨÀû£¬Ç뼰ʱÓëÁªÏµÕ¾³¤É¾³ýÏà¹ØÄÚÈÝ! |
- Flex3ѧϰ¹ì¼££º½«²ÊÉ«ÕÕÆ¬×ª»»³ÉºÚ°×ÕÕÆ¬
- Oracle EBS 12 For Windows µÄÏêϸ°²×°²½Öè
- ½â¶ÁC++±à³ÌÖÐÅÉÉúÀàµÄ¹¹³ÉºÍ´´½¨
- Á˽âTDD
- fastjsonʹÓÃʵÀý
- ÔÚÎÒʹÓÃxcode 6.0.1ÉÏ´«Ó¦ÓóÌÐòºó,¡°ÄúµÄ¶þ½øÖÆÎļþδÕë¶Ô
- ruby-on-rails ¨C Rails ¨C ÈçºÎÔÚÊý¾Ý¿âÖд洢¡°has_many¡±
- xcode ¨C ÎÞ·¨Æô¶¯iOS6µÄÀÖÆ÷
- react-nativeÊÔÍæ(3)-¿ú̽¿ª·¢ÕßÑ¡Ïî
- ²Ý¸åFMDB