一.身份验证
1.定义:
身份验证是从用户出获取表示凭据(如用户名和密码)并听过某些授权机构验证哪些凭据的过程.
配置节中存储了登录用户的信息,这种方式可以适用于小型的应用程序,实际项目中是将登录用户信息存储在关系型数据库中,例如SQL Server
2.身份验证思路:
a.用户模型,控制器登陆方法,登录视图
登陆成功,记录会话.然后用户访问其它的方法,每个方法执行前都应该判断会话
问题:太麻烦
b.Controller父类实现了IActionFilter方法:
在执行每个方法之前OnActionExecuting方法被调用
c.重写OnActionExecuting方法:
3.身份验证的做法:2种方法:
方法1:
登录成功,记录会话访问[其它任何方法]前都要判断会话
登录正确的做法(不这样做,缺陷:绕过登录的问题,登录根本起不到安全验证的作用!
在4个方法中不检查会话,其他方法(执行前)都要检查会话.缺点,太麻烦?
方法2:
登录成功,记录会话,仅在OnActionExecuting中判断会话即可
具体步骤细节如下
步骤1:
创建一个MyController控制器,继承Controller控制器
重写OnActionExecutin
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
object obj = Session["my"];
if (obj == null)
{
filterContext.Result=
Redirec("/Users/Login");
}
}
步骤2:
除去Users控制器(Login,register)不能继承MyController,
其他的控制器的基类都修改成MyController
过滤器:计算机领域比喻的叫法
作用:在执行其他方法之前首先要执行的
在执行其他任务之前首先要执行的