浅谈MVC Form认证

简单的谈一下MVC的Form认证。

在做MVC项目时,用户登录认证需要选用Form认证时,我们该怎么做呢?下面我们来简单给大家说一下。

首先说一下步骤

1、用户登录时,如果校验用户名密码通过后,需要调用FormsAuthentication.SetAuthCookie()这个方法。

2、用户退出时,需要调用FormsAuthentication.SignOut();方法

3、在配置文件web.config中,system.web 节点下, 配置<authentication  mode="Forms"/>

4、校验:HttpContext.User.Identity.IsAuthenticated,如果是false,则没有通过认证,如果是true,则通过了认证

以上这三部,即可完成用户登录的Form认证了。

好了,下面我们来看一下具体的代码。(View中的代码就不贴了,只贴Controller中的代码吧)

1、建立一个用于用户登录用的Model

1     public class LoginViewModel
2     {
3         [DisplayName("用户名")]
4         public string UserName { get; set; }
5         [DisplayName("密码")]
6         public string Password { get; set; }
7     }

2、建立登录用的Controller与页面,其中Controller里面有登录与退出两个Action

 1     public class LoginController : Controller
 2     {
 3         // GET: Login
 4         public ActionResult Index(LoginViewModel loginViewModel)
 5         {
 6             if (loginViewModel.UserName == "admin" && loginViewModel.Password == "123456")
 7             {
 8                 FormsAuthentication.SetAuthCookie(loginViewModel.UserName, false);
 9                 return RedirectToAction("Index", "Main");
10             }
11             return View();
12         }
13
14         //GET: LogOut
15         public ActionResult LogOut()
16         {
17             FormsAuthentication.SignOut();
18             return RedirectToAction("Index", "Login");
19         }
20     }

3、建立一个登录后,用户跳转的页面与Controller

1     public class MainController : BaseController
2     {
3         // GET: Main
4         public ActionResult Index()
5         {
6             return View();
7         }
8     }

4、登陆后跳转的页面的Controller是继承的BaseController,那么BaseController是怎么写的呢?

 1     public class BaseController : Controller
 2     {
 3         protected override void OnActionExecuting(ActionExecutingContext filterContext)
 4         {
 5             base.OnActionExecuting(filterContext);
 6             //登录认证处理
 7             if (!filterContext.HttpContext.User.Identity.IsAuthenticated)
 8             {
 9                 //未登录
10                 Response.Redirect("~/Login/Index");
11             }
12             else
13             {
14                 //已登录,Action级权限控制处理
15                 var controllerName = filterContext.RouteData.Values["controller"].ToString();//控制器名称
16                 var actionName = filterContext.RouteData.Values["action"].ToString(); //Action名称
17                 //根据controllerName与actionName进行权限检查
18                 /*
19                  if()
20                  { }
21                  else
22                  { }
23              */
24             }
25         }
26     }

这个BaseController很简单,大体的作用就是,方式继承这个BaseController的控制器,当执行其下面的Action时,会进行Form校验,如果校验成功,则……,如果校验不成功则……,

登陆后的页面的Controller都会继承BaseController,这样,就不用在每个Controller中的Action重复的写Form认证的代码了。

是不是很简单?

当然,具体的细节问题这里都没有涉及到,这里只是简单的给大家介绍一下Form认证的使用,具体的细节问题,大家可以参考园中的大神们的博文。

时间: 2024-11-07 10:38:50

浅谈MVC Form认证的相关文章

浅谈MVC

浅谈MVC What is MVC? MVC与模板概念的理解:MVC(Model View Controller)模型-视图-控制器 MVC本来是存在于Deskt op程序中的,M是指数据模型,V是指用户界面,C则是控制器.使用MVC 的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式.比如一批统计数据你可以分别用柱状图.饼图来表示.C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新. 模型-视图-控制器(MVC)是Xerox PARC在八十年代为编程语言Small

2014-07-29 浅谈MVC框架中Razor与ASPX视图引擎

今天是在吾索实习的第15天.随着准备工作的完善,我们小组将逐步开始手机端BBS的开发,而且我们将计划使用MVC框架进行该系统的开发.虽然我们对MVC框架并不是非常熟悉,或许这会降低我们开发该系统的效率,但是我们可以通过边学边做的方式来实现其开发的.这不仅便于我们日后对系统的管理与维护,而且还给我们带来一个学习的动力与实践的地方. 但我们在创建一个基于MVC框架的项目时,就遇到一些问题了.那就是MVC的视图引擎是有两种的,一种是Razor,会以cshtml后缀的文件作为视图文件:另一种是ASPX,

浅谈MVC、MVP、MVVM架构模式的区别和联系

浅谈MVC.MVP.MVVM架构模式的区别和联系 学习了:http://www.cnblogs.com/guwei4037/p/5591183.html http://blog.csdn.net/ttf1993/article/details/49405329 MVC: Model->View->Controller->Model MVP: View <--> Presenter <--> Model MVVM: View (ViewController)<

浅谈 MVC 和 MTV

浅谈 MVC 和 MTV 一.MVC M:model,模型,就是数据模型,负责数据的存取: V:view,视图,负责页面的展示逻辑: C:controller,控制器,负责业务逻辑的处理: 二.MTV M:model,模型,就是数据模型,负责数据的存取: T:template,模板,负责页面的展示逻辑: V:view function,视图函数,负责业务逻辑的处理: 注:核心目的就是为了解耦,提高开发效率 欢迎关注小婷儿的博客: csdn:https://blog.csdn.net/u01098

浅谈MVC与三层架构

首先给大家引入下MVC的概念: MVC(Model View Controller)模型.视图以及控制器,它是一种较为广泛应用的结构设计模式. 模型:就是在MVC设计模式中需要被显示的数据.在通常情况下,该模型需要从数据库中读取数据.保存模型的状态等,提供数据的访问方法以及数据的维护. 视图:就是用来显示模型中数据的用户界面,一般来书,视图就是HTML页面. 控制器:就是用来处理对用户的输入或者交互命令,以便改变模型的状态,选择适当的视图来显示对应的模型数据. 工作机制如右图所示: (1)用户向

浅谈MVC Razor基本语法

Razor语法是在MVC3.0引入的全新的c#语法,取而代之<%...%>语法.用在mvc的view页面. 首先谈一下razor语法的基本用法: 1.如果在页面输出单一变量时,只要在c#语句之前加上@符号即可,范例如下: <p> 现在时刻:@DateTime.Now </p> 2.在页面中输出一段含有空白子元或运算子的结果时,必须在前后加上一个小括弧,范例如下: <p> 会员名称:@(User.Identity.Name+Model.MemberLevel)

浅谈 MVC中的ViewData、ViewBag和TempData

ViewBag和TempData的区别 ViewData ViewBag 它是Key/Value字典集合 它是dynamic类型对像 从Asp.net MVC 1 就有了 ASP.NET MVC3 才有 基于Asp.net 3.5 framework 基于Asp.net 4.0与.net framework ViewData比ViewBag快 ViewBag比ViewData慢 在ViewPage中查询数据时需要转换合适的类型 在ViewPage中查询数据时不需要类型转换 有一些类型转换代码 可

浅谈MVC页面之间参数传递

关于MVC页面之间的传值,有多种方式,下面,我们就Html.RenderAction 方式 和 Html.RenderPartial 方式 来给大家分享一下有什么不同. 一.Html.RenderAction 方式页面之间传递参数的方式: Html.RenderAction 方式 是访问的另一页面的Controller,并将参数传入另一页面的Controller中相应的Action中的参数中. 例如:我有这么一个Controller和Action(是一个部分视图的) 1 public class

浅谈MVC模式

1. 如何设计一个程序的结构,这是一门专门的学问,叫做"架构模式"(architectural pattern),属于编程的方法论. MVC模式就是架构模式的一种,它对我的启发特别大.我觉得它不仅适用于开发软件,也适用于其他广泛的设计和组织工作. 下面是我对MVC模式的一些个人理解,不一定正确,主要用来整理思路. 2. MVC是三个单词的首字母缩写,它们是Model(模型).View(视图)和Controller(控制). 这个模式认为,程序不论简单或复杂,从结构上看,都可以分成三层.