• CJCMS系列谈谈后端验证


      4个月过去了,我解放出来一会儿,有点闲空。我的博客也是时候更新一下了,今天我想讲讲项目中怎么安排后端验证。

      很多人对于后端验证很烦恼,包括很多项目经理。因为处理不好后端验证,代码的可阅读程度简直难以形容。

      我认为验证者,有的放矢也。对谁验证就在哪个上面做文章。我一直认为应该把后端验证放到数据传输对象层面去做,每个数据传输对象的属性都得在设计的时候做好验证设置,非空就得非空,字符且长度范围等都得设计好。(可以使用微软提供的企业验证类库或者开源的一些类库)

        数据传输对象的构造函数可以申明两个,其一为显示空构造;其二为传参构造;关键就在传参构造这里,在传参构造之后我们调用统一的泛化过的验证方法。以this传出,验证失败自然进入异常处理框架中,验证通过继续逻辑。

     

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    
    namespace MvcApplication1.Models
    {
        public class LogOnDTO : IDTO
        {
            /// <summary>
            /// 登陆时发送服务端的用户名
            /// </summary>
            [NotNullValidator]
            public string Name;
    
            /// <summary>
            /// 登陆时明文发送服务端的密码(可以接受js加密后字符)
            /// </summary>
            [NotNullValidator]
            public string PlaintextPwd;
    
            /// <summary>
            /// 登陆时发送服务端的是否保存登陆状态
            /// </summary>
            [NotNullValidator]
            public bool IsRemmber;
    
    
            public LogOnDTO()
            { }
    
            public LogOnDTO(string name,string plaintpwd,bool isr)
            {
                this.Name = name;
                this.PlaintextPwd = plaintpwd;
                this.IsRemmber = isr;
    
                ValidationUtil<LogOnDTO>.DoValidate(this);
            }
        }
    }
     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Web;
     5 
     6 namespace MvcApplication1.Models
     7 {
     8     public static class ValidationUtil<T> where T : IDTO
     9     {
    10 
    11         public static void  DoValidate(IDTO dto)
    12         {
    13             if (dto != null)
    14             {  }
    15             else
    16             { throw new Exception("验证出错- - 报送哪个字段什么问题等等"); }
    17         }
    18     }
    19 }

       这样的设计呢,只让程序员在设计传输对象的时候,注意设计字段的限制,其余的都由系统去处理好了,这样减轻了程序员的代码量,同时容易发现问题,解决问题。

  • 相关阅读:
    黑马视频-事务
    黑马视频—循环
    黑马视频-子查询
    黑马视频-索引
    黑马视频-SQL之case
    总结 总结
    设计模式总结
    全局变量 /static全局变量 /局部变量/成员变量/extern 分析
    runtime 内涵篇
    runtime 使用总结
  • 原文地址:https://www.cnblogs.com/ntcj/p/2968653.html
Copyright © 2020-2023  润新知