当前位置: 首页 > 后端技术 > Node.js

Node用户登录注册功能总结

时间:2023-04-03 22:45:21 Node.js

介绍:之前做过一个小项目,涉及到用户注册登录的功能。现将此实施过程记录下来,以供日后回顾和维护。内容原理分析实战案例原理分析用户注册简单流程图输入用户名和密码检查用户是否存在,注册成功返回提示用户登录简单流程图实战案例Mysql建表方法见文《node和mysql的CURD总结》文中已经说了,我们直接建用户表。--创建数据表mysql>CREATETABLE`user`(`id`int(11)NOTNULLCOMMENT'id',`name`varchar(255)COLLATEutf8_unicode_ciNOTNULLCOMMENT'username',`password`varchar(255)COLLATEutf8_unicode_ciNOTNULLCOMMENT'password',`create_time`timestampNOTNULLDEFAULTCURRENT_TIMESTAMPCOMMENT'createtime',`update_time`timestampNOTNULLDEFAULTCURRENT_TIMESTAMPONUPDATECURRENT_TIMESTAMPCOMMENTIS'更新时间')ARDENGINE=utf8_unicode_ciCOMMENT='用户表';节点编写根据上面的流程图,开始编写程序。在写作之前。首先在项目中安装一个依赖包,可以生成mysql语句。npminstallxqsqlxqsqlnpm地址的具体用法,点击地址查看文档介绍。用户注册app.post('/reg',async(req,res)=>{letparams=req.body;if(params.name&¶ms.password){letgetSql=xqsql.get('user',{type:'one',key:'name',ids:[params.name],},'default','id,name');让getSqlResult=awaitdb(getSql);if(getSqlResult.code==200&&getSqlResult.data.list.length==0){letaddParams=[{name:params.name,password:params.password,}]letaddFields=[{name:'用户名',value:'name',isMust:true},{name:'密码',value:'password',isMust:true},]letaddSql=xqsql.add('user',addParams,addFields);让addSqlResult=awaitdb(addSql);if(addSqlResult.code==200){returnres.json({code:200,msg:'get_succ',data:{info:"注册成功!",}});}else{returnres.json(addSqlResult);}}else{returnres.json({code:101,msg:'get_succ',data:{info:"Useralreadyexists!",}})}}else{returnres.json({code:101,msg:'get_succ',data:{info:"用户名和密码不能为空!",}})}})用户登录这部分登录的用户信息由session保存在这里,也可以选择jwt,这次只用session安装依托包;npminstallexpress-sessioncookie-parser//引入constsession=require('express-session');constcookieParser=require('cookie-parser');//配置app.use(cookieParser());app.use(session({resave:true,saveUninitialized:false,secret:'demo'}))app.post('/login',async(req,res)=>{letparams=req.body;如果(params.name&¶ms.password){letgetSql=xqsql.get('user',{type:'one',key:'name',ids:[params.name],},'default','id,name,password');letgetSqlResult=awaitdb(getSql);if(getSqlResult.code==200&&getSqlResult.data.list.length){letuserInfo=getSqlResult.data.list[0];if(params.name==getSqlResult.data.list[0].name&¶ms.password==getSqlResult.data.list[0].password){letloginInfo=req.session.user;if(loginInfo&&loginInfo.name==params.name){returnres.json({code:101,msg:'get_fail',data:{info:"用户已登录!",}});}else{letuser={name:params.name,}req.session.user=user;returnres.json({code:200,msg:'get_succ',data:{info:"登录成功!",}});}}else{returnres.json({code:101,msg:'get_fail',data:{info:"用户名或密码错误!",}})}}else{returnres.json({code:101,msg:'get_fail',data:{info:"Userdoesnotexist!",}})}else{returnres.json({code:101,msg:'get_succ',data:{信息:"用户名和密码不能为空!",}})}})注销和登录很简单,直接将用户信息改成null即可app.post('/logout',(req,res)=>{letuser=req.session.user;if(user&&user.name!=''){req.session.user=null;returnres.json({code:200,msg:'get_succ',data:{info:"注销成功!",}});}else{returnres.json({code:101,msg:'get_fail',data:{info:"用户未登录!",}})}})这第二个总结就写到这里了。当然,这只是最基本的注册和登录功能,非常复杂的注册和登录也是在最基本的基础上处理和复杂化的。最重要的是培养逻辑思维能力。如何实现一个功能,并不断优化到最好的水平。