昨天历经千辛万苦将系统进行了还原
今天正式开始操作
目标:
登入,注册,退出登录,模块
base控制器验证模块
前端登入注册模块
后端
关于登入注册这种东西,已经不知道弄了多少次了,现在再弄,简直就是小菜一叠,进度进展的飞快,一步到位!
登录,注册,退出处理控制器:
using CC.GraduationProject.Common;using CC.GraduationProject.IBLL;using CC.GraduationProject.Model;using Microsoft.AspNetCore.Http;using Microsoft.AspNetCore.Identity;using Microsoft.AspNetCore.Mvc;using Microsoft.EntityFrameworkCore;using System;using System.Collections.Generic;using System.Linq;using System.Threading.Tasks;namespace CC.GraduationProject.API.Controllers{ [Route("[controller]/[action]")] [ApiController] public class AccountController : BaseController { private IstudentBll _studentBll; private IteacherBll _teacherBll; public AccountController(IstudentBll studentBll, IteacherBll teacherBll) { IsCheck = 0; _studentBll = studentBll; _teacherBll = teacherBll; } [HttpPost] public async Task<IActionResult> Login([FromForm] string username, [FromForm] string pwd)//处理登录模块 { //var studentData = await _studentBll.GetEntities(u => u.student_username == username).FirstOrDefaultAsync(); //if (studentData == null) //{ // var teacherData = await _teacherBll.GetEntities(u => u.teacher_username == username).FirstOrDefaultAsync(); // if (teacherData == null) // { // return Content(JsonFactory.Json(message: "用户名或者密码错误", flag: false));//登入失败,教师学生都没有 // } // else // { // if (teacherData.teacher_password == pwd) // { // HttpContext.Session.SetString("teacherId", teacherData.id.ToString()); // return Content(JsonFactory.Json(message: "欢迎!" teacherData.teacher_username));//教师登入成功 // } // else // { // return Content(JsonFactory.Json(message: "用户名或者密码错误", flag: false)); // } // } //} //else //{ // if (studentData.student_password == pwd) // { // HttpContext.Session.SetString("studenId", studentData.id.ToString()); // return Content(JsonFactory.Json(message: "欢迎!" studentData.student_username));//学生登入成功 // } // else//密码错误 // { // return Content(JsonFactory.Json(message: "用户名或者密码错误", flag: false)); // } //} var studentData = await _studentBll.GetEntities(u => u.student_username == username).FirstOrDefaultAsync(); if (studentData != null) { if (studentData.student_password == pwd) { HttpContext.Session.SetString("studentId", studentData.id.ToString()); return Content(JsonFactory.Json(message: "欢迎!" studentData.student_username,data:0));//学生登入成功 } } else { var teacherData = await _teacherBll.GetEntities(u => u.teacher_username == username).FirstOrDefaultAsync(); if (teacherData != null) { if (teacherData.teacher_password == pwd) { HttpContext.Session.SetString("teacherId", teacherData.id.ToString()); return Content(JsonFactory.Json(message: "欢迎您!" teacherData.teacher_username,data:1));//教师登入成功 } } } return Content(JsonFactory.Json(message: "用户名或者密码错误", flag: false)); } [HttpPost] public IActionResult Register([FromForm] string student_number, [FromForm] string student_name,[FromForm] string student_class,[FromForm] int student_age,[FromForm]string student_mailbox,[FromForm]string student_phone,[FromForm]string student_username,[FromForm]string pwd) { student studentData = new student(); studentData.student_age = student_age; studentData.student_class = student_class; studentData.student_mailbox = student_mailbox; studentData.student_name = student_name; studentData.student_number = student_number; studentData.student_phone = student_phone; studentData.student_username = student_username; studentData.student_password = pwd; _studentBll.Add(studentData); return Redirect("/Login"); } [HttpPost] public ActionResult LogOff() { HttpContext.Session.Clear(); return Content(JsonFactory.Json(message: "安全退出成功!")); } }}
注释的地方,是我写的第一版,可阅性比较差,所以我修改成了现在这种
关于base控制器也写好了
using CC.GraduationProject.Common;using CC.GraduationProject.Model;using Microsoft.AspNetCore.Http;using Microsoft.AspNetCore.Identity;using Microsoft.AspNetCore.Mvc;using Microsoft.AspNetCore.Mvc.Filters;using System;using System.Collections.Generic;using System.Linq;using System.Threading.Tasks;namespace CC.GraduationProject.API.Controllers{ public class BaseController : Controller//使用.netcore管道 { public int IsCheck = 1;//设置是否需要校验用户是否登录属性 public int studentId = 0;//0代表没有 public int teacherId = 0; public override void OnActionExecuting(ActionExecutingContext filterContext) { base.OnActionExecuting(filterContext); switch (IsCheck) { case 1://表示学生获得教师登入需要检验 var data1 = HttpContext.Session.GetString("studentId"); var data2 = HttpContext.Session.GetString("teacherId"); if (data1 != null || data2 != null)//表示已经登入过 { studentId = Convert.ToInt32(data1); teacherId = Convert.ToInt32(data2); } else { filterContext.Result = Content(JsonFactory.Json(message: "登录已过期", flag: false)); } break; case 0: return; } } }}
所有控制器继承于这个base,如果不需要验证,只需要在构造函数里面将ischeck改成0即可
例如:
public override void OnActionExecuting(ActionExecutingContext filterContext)
问题也不大
使用api操作一下,发现了都没有问题了,基本调试完毕!
现在开始前端操作
由于界面的话,我并不太感冒
就先用表单代替吧
对了,后续登入得加验证码,这里先留个坑
前端
花了2分钟,做了一个简易的表单
<template><div class="loginForm shadow-lg"><el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm"> <el-form-item label="用户" prop="username"> <el-input v-model="ruleForm.username" placeholder="请输入用户名"></el-input> </el-form-item> <el-form-item label="密码" prop="pwd" > <el-input v-model="ruleForm.pwd" placeholder="请输入密码"></el-input> </el-form-item> <el-form-item> <el-button type="primary" @click="submitForm('ruleForm')">登入</el-button> <el-button @click="resetForm('ruleForm')">重置</el-button> </el-form-item></el-form></div> </template><script> export default { data() { return { ruleForm: { username: '', pwd: '', }, rules: { username: [ { required: true, message: '用户名不能为空', trigger: 'blur' }, { min: 3, max: 20, message: '长度在 3 到 20 个字符', trigger: 'blur' } ], pwd: [ { required: true, message: '密码不能为空', trigger: 'blur' }, { min: 3, max: 20, message: '长度在 3 到 20 个字符', trigger: 'blur' } ] } }; }, methods: { submitForm(formName) { this.$refs[formName].validate((valid) => { if (valid) { alert('submit!'); } else { console.log('error submit!!'); return false; } }); }, resetForm(formName) { this.$refs[formName].resetFields(); } } }</script><style scoped>.loginForm{ width: 500px; height: 500px; position:absolute; top: 50%; left: 50%; margin-left: -250px; margin-top: -250px; background: white; padding: 30px; padding-left: 50px; padding-right: 50px;}</style>>
我们这里采用axios异步请求吧
那我们应该还得写一个api
运行一下果然出问题了
现在登入有3种情况
1:用户或者密码错误
不过现在出了一个问题
当我使用我新创建的学生账号的时候,我发现,并没有数据
BUG并不可怕,可怕的是,你不知道哪来的BUG
我来思考一下,为什么会造成这个原因
今天,就到这里了,期待下次与你相见!
来源:https://www.icode9.com/content-4-836701.html联系客服