ASP.NET MVC使用Authorize过滤器验证用户登录
ASP.NET MVC使用Authorize过滤器验证用户登录。Authorize过滤器首先运行在任何其它过滤器或动作方法之前,主要用来做登录验证或者权限验证。
示例:使用Authorize过滤器实现简单的用户登录验证。
1、创建登录控制器LoginController
/// <summary>
/// 登录控制器
/// </summary>
[AllowAnonymous]
public class LoginController : Controller
{/// <summary>/// 登录页面/// </summary>public ActionResult Index(){return View();}/// <summary>/// 登录/// </summary>[HttpPost]public ActionResult Login(string loginName, string loginPwd){if (loginName == "admin" && loginPwd == "123456"){//登录成功Session["LoginName"] = loginName;return RedirectToAction("Index", "Home");}else{//登录失败return RedirectToAction("Index", "Login");}}/// <summary>/// 注销/// </summary>public ActionResult Logout(){Session.Abandon();return RedirectToAction("Index", "Login");}
}
注意:在登录控制器LoginController上添加AllowAnonymous特性,该特性用于标记在授权期间要跳过AuthorizeAttribute的控制器和操作。
2、创建登录页面
@{ViewBag.Title = "登录页面";Layout = null;
}<h2>登录页面</h2><form action='@Url.Action("Login","Login")' id="form1" method="post">用户:<input type="text" name="loginName" /><br />密码:<input type="password" name="loginPwd" /><br /><input type="submit" value="登录">
</form>
效果图:
3、创建主页控制器LoginController
public class HomeController : Controller
{public ActionResult Index(){//获取当前登录用户string loginName = Session["LoginName"].ToString();ViewBag.Message = "当前登录用户:" + loginName;return View();}
}
4、创建主页页面
@{ViewBag.Title = "Index";Layout = null;
}<h2>Index</h2>
<h3>@ViewBag.Message</h3>
<a href="@Url.Action("Logout","Login")">注销</a>
效果图:
5、创建授权过滤器LoginAuthorizeAttribute类
创建Filter目录,在该目录下创建授权过滤器LoginAuthorizeAttribute类,继承AuthorizeAttribute。
using System.Web.Mvc;namespace MvcApp.Filter
{/// <summary>/// 授权过滤器/// </summary>public class LoginAuthorizeAttribute : AuthorizeAttribute{public override void OnAuthorization(AuthorizationContext filterContext){//判断是否跳过授权过滤器if (filterContext.ActionDescriptor.IsDefined(typeof(AllowAnonymousAttribute), true)|| filterContext.ActionDescriptor.ControllerDescriptor.IsDefined(typeof(AllowAnonymousAttribute), true)){return;}//判断登录情况if (filterContext.HttpContext.Session["LoginName"] == null || filterContext.HttpContext.Session["LoginName"].ToString()==""){//HttpContext.Current.Response.Write("认证不通过");//HttpContext.Current.Response.End();filterContext.Result = new RedirectResult("/Login/Index");}}}
}
通常Authorize过滤器也是在全局过滤器上面的,在App_Start目录下的FilterConfig类的RegisterGlobalFilters方法中添加:
using System.Web;
using System.Web.Mvc;
using MvcApp.Filter;namespace MvcApp
{public class FilterConfig{public static void RegisterGlobalFilters(GlobalFilterCollection filters){filters.Add(new HandleErrorAttribute());//添加全局授权过滤器filters.Add(new LoginAuthorizeAttribute());}}
}
Global.asax下的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;namespace MvcApp
{public class MvcApplication : System.Web.HttpApplication{protected void Application_Start(){AreaRegistration.RegisterAllAreas();FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);RouteConfig.RegisterRoutes(RouteTable.Routes);BundleConfig.RegisterBundles(BundleTable.Bundles);}}
}
ASP.NET MVC使用Authorize过滤器验证用户登录相关推荐
- asp.net mvc 自定义全局过滤器 验证用户是否登录
一般具有用户模块的系统都需要对用户是否登录进行验证,如果用户登录了就可以继续操作,否则退回用户的登录页面 对于这样的需求我们可以通过自定义一个独立的方法来完成验证的操作,但是这样代码的重复率就大大提高 ...
- asp.net 登录验证 mysql_Asp.net mvc验证用户登录之Forms实现详解
这里我们采用asp.net mvc 自带的AuthorizeAttribute过滤器验证用户的身份,也可以使用自定义过滤器,步骤都是一样. 第一步:创建asp.net mvc项目, 在项目的App_S ...
- ASP.NET MVC如何实现自定义验证(服务端验证+客户端验证)
ASP.NET MVC通过Model验证帮助我们很容易的实现对数据的验证,在默认的情况下,基于ValidationAttribute的声明是验证被使用,我们只需要将相应的ValidationAttri ...
- [Asp.net MVC]HandleErrorAttribute异常过滤器
[Asp.net MVC]HandleErrorAttribute异常过滤器 参考文章: (1)[Asp.net MVC]HandleErrorAttribute异常过滤器 (2)https://ww ...
- Asp.Net使用加密cookie代替session验证用户登录状态 源码分享 欢迎拍砖
小论坛地址: http://rayyu.5d6d.com/thread-9444-1-1.html 正文: 首先 session 和 cache 拥有各自的优势而存在. 他们的优劣就不在这里讨论了. ...
- ASP.NET MVC自定义AuthorizeAttribute篇知识点讲解—登录限制
阅读目录 1.前言 2.AuthorizeAttribute登录特性解释 3.代码示例 1.前言 a.微软对ASP.NET的开发从WebForm到MVC的转变,已经正式过去5,6个年头,现在WebFo ...
- MVC4验证用户登录特性实现方法
在开发过程中,需要用户登陆才能访问指定的页面这种功能,微软已经提供了这个特性. // 摘要:// 表示一个特性,该特性用于限制调用方对操作方法的访问.[AttributeUsage(Attribute ...
- MVC4项目中验证用户登录一个特性就搞定
在开发过程中,需要用户登陆才能访问指定的页面这种功能,微软已经提供了这个特性.// 摘要:// 表示一个特性,该特性用于限制调用方对操作方法的访问.[AttributeUsage(AttributeT ...
- Struts2+Spring+Hibernate step by step 11 ssh拦截验证用户登录到集成
注意:该系列文章从教师王健写了一部分ssh集成开发指南 引言: 之前没有引入拦截器之前,我们使用Filter过滤器验证用户是否登录,在使用struts2之后,全然能够使用拦截器,验证用户是否已经登录, ...
最新文章
- Linux shell编程学习笔记-----第十四章
- 删边(normal)
- Elasticsearch Java API 的使用—多条件查询
- Android之最简单和靠谱的监听Home键和菜单键(最近任务栏)
- 预售┃没有标题,配得上这款“俄罗斯方块”
- UGUI学习笔记之渲染顺序
- 48 CO配置-控制-获利能力分析-创建经营组织
- 从Softmax回归到Logistic回归
- 第二轮 冲次会议第一次
- 【thinkphp 5 在nginx 环境下路由无法生效(404 500错误 )的解决方法】
- 数学建模学习笔记(六):排队论模型
- PCB选料时的小技巧和参考网站+电解电容封装尺寸+稳压管型号
- 【CVPR 2022】目标检测SOTA:DINO: DETR with Improved DeNoising Anchor Boxes for End-to-End Object Detection
- 计算机应用技术一班班徽,1班班徽设计图片大全欣赏
- 枸杞动态分类-大致思路
- 浏览器 滚动条 修改样式隐藏滚动条
- jenkins使用python脚本发送企业微信通知
- 如何实现网站事件统计与事件分析
- zxr10交换机配置手册vlan_中兴ZXR10配置说明
- 分享一款实用脑电分析软件,模拟非侵入性脑刺激