过滤器作为MVC模式中面向切面编程应用很广泛,例如身份验证,日志,异常,行为截取等。博客园里面的大神对应过滤器的介绍以及很多,MVC4中不同的过滤器也介绍得很清楚。禁止吸烟 如果对过滤器还没有概念的童鞋,不妨先看看前面各位前辈的介绍(前面的文章说得已经很好了,而我是想写一个较为完整的例子)。

  此文仅作为个人学习笔记整理,如果有幸对你有所帮助,不胜荣幸。如果文中有错误的地方,感谢指正。

  如果在个人前期学习阶段,使用MVC自带的身份验证,给人的感觉就是无法自己达到自己想要的控制效果,掌握起来比较麻烦。往往在一个小的作为学习MVC的项目里面,反而自己写一个过滤器来实现相关的功能,反而觉得整个学习思路比较清晰。该实例的身份验证过滤器支持三种验证方式:

1.游客(每个人都可以访问)

2.用户(注册的用户)

3.管理员(后台管理)

一、先来看看数据库

MVC4学习笔记之--身份认证过滤器

定义了一个基础的用户表,右侧是一个权限表。右侧的权限表是固定的,一开始就把我们的权限规则数据填充在里面。设置RoleId这个字段是为了待会方便我们判断权限。

 1 using System;
 2 using System.Collections.Generic;
 3 using System.ComponentModel;
 4 using System.ComponentModel.DataAnnotations;
 5 using System.ComponentModel.DataAnnotations.Schema;
 6 using System.Linq;
 7 using System.Web;
 8 
 9 namespace MyAuthorizen.Models
10 {
11     [Table("User")]
12     public class User
13     {
14         [Key]
15         public int UserId { get; set; }
16 
17         [DisplayName("用户名")]
18         [Required(ErrorMessage="用户名是必填字段")]
19         public string Name { get; set; }
20 
21         [DisplayName("密码")]
22         [DataType(DataType.Password)]
23         [Required(ErrorMessage="密码是必填字段")]
24         public string Password { get; set; }
25 
26         [DisplayName("昵称")]
27         public string AuthName { get; set; }
28 
29         public int RoleId { get; set; }
30 
31         public virtual Roles Role { get; set; }
32     }
33 
34     public class LoginModel
35     {
36         [DisplayName("用户名")]
37         [Required(ErrorMessage = "用户名是必填字段")]
38         public string Name { get; set; }
39 
40         [DisplayName("密码")]
41         [DataType(DataType.Password)]
42         [Required(ErrorMessage = "密码是必填字段")]
43         public string Password { get; set; }
44     }
45 
46     public class RegisterModel
47     {
48         [DisplayName("用户名")]
49         [Required(ErrorMessage = "用户名是必填字段")]
50         public string Name { get; set; }
51 
52         [DisplayName("密码")]
53         [DataType(DataType.Password)]
54         [Required(ErrorMessage = "密码是必填字段")]
55         public string Password { get; set; }
56 
57         [DisplayName("确认密码")]
58         [DataType(DataType.Password)]
59         [Required(ErrorMessage = "密码是必填字段")]
60         [Compare("Password", ErrorMessage = "密码和确认密码不匹配。")]
61         public string ConfirmPassword { get; set; }
62 
63         public int RoleId { get; set; }
64 
65         public virtual Roles Role { get; set; }
66     }
67 }
View Code

相关文章:

  • 2021-11-15
  • 2021-05-26
  • 2021-07-12
  • 2021-06-12
  • 2021-06-30
  • 2022-02-15
  • 2021-11-05
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-06-18
  • 2022-12-23
  • 2021-06-28
  • 2022-01-27
  • 2021-12-07
相关资源
相似解决方案