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 }
  • 相关阅读:
    formValidator4.1.1问题汇总
    什么,又是字符串拼接,我有些不淡定了
    webform下的分页辅助类再总结
    winform下的一个分页控件总结
    总结SQL Server窗口函数的简单使用
    sql复制表定义及复制数据行
    动态SQL开发基础和经验再总结
    c#执行定时计算限制操作(计时器)
    ado.net关于操作数据库的连接字符串整理
    使用Visual Studio实现WinForm多语言版本实例
  • 原文地址:https://www.cnblogs.com/lori/p/2051909.html
Copyright © 2011-2022 走看看