ASP.NET MVC框架学习#3:账户管理

前言

上一章我们建立了数据库,实现了对业务信息的管理,但是网站的建设中还有一类比较特殊的数据管理,就是对数据的加密以及验证访问,最常用的就是账户的注册,登录,注销,修改等。
为了研究这个问题,本章会在原先网站基础上添加用户注册登录界面。

数据模型

首先,仍然是定义数据模型

Account
变量 类型 说明
Id int 关键值,数据库定位数据用。
UserName string 用户名
Password string 用户密码
ConfirmedPassword string 第二次验证密码,用户注册时用到,不存入数据库
函数名 参数 返回类型 功能说明
IsValid() bool 从数据库中对比用户名和密码
IsExtends() bool 判断是否已经存在相同用户名
IsPasswordConfirmed() bool 注册密码验证

代码:

using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;

namespace MvcDemo.Models {

	public class Account {
		private MvcDemoContext db = new MvcDemoContext();
		private string AdminName = "admin";
		private string AdminPassword = "admin";

		[Key]
		public int Id { get; set; }

		[Required]
		[DisplayName("用户名")]
		public string UserName { get; set; }

		[Required]
		[DisplayName("用户密码")]
		[DataType(DataType.Password)]
		public string Password { get; set; }

		//注册验证密码,不用保存
		[NotMapped]
		[DisplayName("密码确认")]
		[DataType(DataType.Password)]
		public string ConfirmedPassword { get; set; }

		//该方法应从数据库中对比用户名和密码
		public bool IsValid() {

			foreach (var item in db.Accounts) {
				if (item.UserName == this.UserName && item.Password == this.Password) {
					return true;
				}
			}

			//默认管理员密码
			if (this.UserName == AdminName & this.Password == AdminPassword) {
				return true;
			}

			return false;
		}

		//是否是管理员登录
		public bool IsAdministrator() {
			//默认管理员密码
			if (this.UserName == AdminName & this.Password == AdminPassword) {
				return true;
			}
			return false;
		}

		//判断是否已经存在相同用户名
		public bool IsExtends() {

			foreach (var item in db.Accounts) {
				if (item.UserName == this.UserName) {
					return true;
				}
			}

			return false;
		}

		//注册密码验证
		public bool IsPasswordConfirmed() {
			if (this.Password == this.ConfirmedPassword) {
				return true;
			}
			return false;
		}
	}
}

当然还要连接数据库

using System.Data.Entity;

namespace MvcDemo.Models {
	public class MvcDemoContext : DbContext {
		public MvcDemoContext() : base("name = MvcDemoContext") {

		}
		public DbSet<Movie> Movies { get; set; }
		public DbSet<Music> Musics { get; set; }
    //连接账号数据
		public DbSet<Account> Accounts { get; set; }
	}
}

Controller

然后我们新建

~/Controller/AccountController.cs

在这个Controller中,我们定义在什么情况下,使用什么Action。

using MvcDemo.Models;
using System.Web.Mvc;

namespace MvcDemo.Controllers {
	public class AccountController : Controller {

		private MvcDemoContext db = new MvcDemoContext();

		//Login
		public ActionResult Login() {
			return View();
		}

		//Login
		[HttpPost]
		public ActionResult Login(Account account) {
			if (!ModelState.IsValid) {
				return View();
			}
			if (account.IsAdministrator()) {
				return RedirectToAction("LoginAsAdministrator", "Account");
			}
			if (account.IsValid()) {
				return RedirectToAction("LoginSuccess", "Account");
			}
			return View(account);
		}

		//LoginSuccess
		public ActionResult LoginSuccess() {
			return View();
		}

		//LoginAsAdministrator
		public ActionResult LoginAsAdministrator() {
			return View(db.Accounts);
		}

		//Register
		public ActionResult Register() {
			return View();
		}

		//Register
		[HttpPost]
		public ActionResult Register(Account account) {
			if (!ModelState.IsValid) {
				return View(account);
			}
			if (!account.IsPasswordConfirmed()) {
				return View(account);
			}
			if (account.IsExtends()) {
				return View(account);
			}
			db.Accounts.Add(account);
			db.SaveChanges();
			return RedirectToAction("Index", "Home");
		}
	}
}

View

最后根据Controller的设计,添加相应的View。
在这里插入图片描述

发布了45 篇原创文章 · 获赞 46 · 访问量 18万+

猜你喜欢

转载自blog.csdn.net/founderznd/article/details/85047032