zoukankan      html  css  js  c++  java
  • .NET MVC中的过滤器

    过滤器其实就是.net中的特性,在.net.35之后我们可以在类或者方法名称上面加某种特性,而在.net mvc环境下,有几个比较重要的特性,如AuthorizeAttribute

    它主要有在权限验证上,有时我们习惯叫它“过滤器”,原因是它可以把不符合要求的用户过滤掉,呵呵,下面是系统中常见的用户权限过滤器的代码,供大家学习

     1 namespace Web.Attributes
     2 {
     3 
     4     /// <summary>
     5     /// 用户验证列举
     6     /// </summary>
     7     public enum AuthenticationType
     8     {
     9         /// <summary>
    10         /// 登录
    11         /// </summary>
    12         Login,
    13         /// <summary>
    14         /// 后台登陆
    15         /// </summary>
    16         BackgroundLogin,
    17         /// <summary>
    18         /// 注册
    19         /// </summary>
    20         Register,
    21     }
    22 
    23     /// <summary>
    24     /// 用户验证过滤器:前台
    25     /// </summary>
    26     public class UserAuthentication : AuthorizeAttribute
    27     {
    28         public AuthenticationType Authentication { get; set; }
    29         /// <summary>
    30         /// 构造函数
    31         /// </summary>
    32         public UserAuthentication()
    33             : this(AuthenticationType.Login) { }
    34         public UserAuthentication(AuthenticationType authentication)
    35         {
    36             this.Authentication = authentication;
    37         }
    38         /// <summary>
    39         /// 执行前验证
    40         /// </summary>
    41         public override void OnAuthorization(AuthorizationContext filterContext)
    42         {
    43 
    44             //验证不成功的时候
    45             switch (this.Authentication)
    46             {
    47                 case AuthenticationType.Login:
    48                     if (!ClientHelper.Current.HasUserInfo)
    49                         filterContext.Result = new RedirectToRouteResult("Default", new RouteValueDictionary { { "Action", "LogOn" }, { "Controller", "Account" }, { "returnUrl", HttpContext.Current.Request.Url.ToString() } });
    50                     break;
    51 
    52                 case AuthenticationType.BackgroundLogin:
    53                     if (string.IsNullOrEmpty(SessionAction.ReadSession("Background_Current_UserID")) || Convert.ToInt32(SessionAction.ReadSession("Background_Current_UserID")) < 0)
    54                         filterContext.Result = new RedirectToRouteResult("Default", new RouteValueDictionary { { "Action", "LogOn" }, { "Controller", "Account" }, { "returnUrl", HttpContext.Current.Request.Url.ToString() } });
    55                     break;
    56                 case AuthenticationType.Register:
    57                     filterContext.Result = new RedirectToRouteResult("Default", new RouteValueDictionary { { "Action", "Register" }, { "Controller", "Account" } });
    58                     break;
    59                 default:
    60                     filterContext.Result = new RedirectToRouteResult("Default", new RouteValueDictionary { { "Action", "Index" }, { "Controller", "Home" } });
    61                     break;
    62             }
    63 
    64         }
    65     }
    66 }
  • 相关阅读:
    Pycharm创建Django项目示例
    Window下MyCat的下载与安装
    Python中使用xlrd、xlwt、xlutils读写Excel文件
    循环队列(Java实现)
    oracle 创建表
    win10 删除文件卡在99%
    python xx005文件操作
    python xx004集合
    python xx003字典
    不理解
  • 原文地址:https://www.cnblogs.com/lori/p/2051909.html
Copyright © 2011-2022 走看看