paip.提升安全性---登录密码出错次数检测

本文介绍了一种提升系统安全性的方法,即通过检测登录密码的出错次数,当达到预设阈值(如20次)时,禁止用户当日登录并提示其通过找回密码功能重置密码。

paip.提升安全性---登录密码出错次数检测

 

 

前言... 1

设计接口... 1

流程设计(伪码)... 1

使用此接口... 2

实现接口... 3

 

 

前言

为了提升安全性,需要对登录时,密码出错次数进行检测,当达到一定次数时,20次,禁止用户当日进行登录。。提示用户可通过取回密码功能,来重设密码

 

设计接口

public interface Iapts

 

//检测

   void check(string Account);

 

//保存本次登录纪录..如果登录TRUE,则清零

   void save(string Account, bool IsValid);

}

 

 

流程设计(伪码)

 

***check(username)

     if (getTimes(username,today) >= getMaxTimes())

            throw ("E1:今日登录连续错误次数超过" + getMaxTimes().ToString() + ",请明日再试或者使用找回密码功能");

 

 

getTimes()

sql: select times from table where  username=xxx and date=today

***************************88

//保存本次登录纪录..如果登录TRUE,则清零

 

  public void save(string Account, bool IsLoginValid)

 

        if (IsLoginValid)     

            clear(Account);       

        else      

              add(Account);       // err times add 1

    

 

clear()

recorde=get(username,today)

rec.times=0;

 

add()

   if (!exist(uname,doday))

              new rec(username,times=1,date=today)

   else

        update time+1 where username and date=today

使用此接口

1.  登录时

 

    Iapts apts = kaziApts.getIaptsImp();

 

        //ati L97 add atipwdtimesSec

        apts.check(Account);

        ////L97

 

loginxxx,set tokeyn()

 

  //ati L97 add atipwdtimesSec

        apts.save(Account, IsValid);

        ////L97

 

2.取回密码时

 

  Iapts apts = atim.getbackpwdItfs.getapts();

   //ati L96 apts add     clear

                if (apts != null)

                    apts.save(uname, true);

 

 

 

实现接口

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using Maticsoft;

using System.Data.SqlClient;

using System.Data;

 

/// <summary>

///iaptsimp 的摘要说明

/// </summary>

public class iaptsimp    :Iapts

{

       public iaptsimp()

       {

              //

              //TODO: 在此处添加构造函数逻辑

              //

       }

 

 

 

 

 

 

 

 

 

 

      void add(string uname)

    {

        inidb();

 

        if (!exist(uname))

        {

 

            Maticsoft.aptsBO o = new aptsBO();

            o.uname = uname;

            o.times = 1;

            o.date = DateTime.Now;

            o.Add();

            return;

        }

 

        int id = getid(uname);

        string strSql = "update apts set times=times+1 where uname=@u and id="+id.ToString();

        SqlParameter[] parameters = {

                                   new SqlParameter("@u", uname)};

        MOLE.SQL.ExecuteSql(strSql.ToString(), parameters);

    }

 

    int getid(string uname)

    {

        string date = getNowDate();

        string date1 = "'" + date + " 00:00:01'";

        string date2 = "'" + date + " 23:59:59'";

        string anddate = " and [date]>=" + date1 + " and [date]<=" + date2;

        string strSql = "select * from apts   where uname=@u" + anddate;

        SqlParameter[] parameters = {

                                   new SqlParameter("@u", uname)};

        DataTable d = MOLE.SQL.GetDataTable(strSql.ToString(), parameters);

        string idstr = d.Rows[0]["id"].ToString();

        return Int32.Parse(idstr);

 

    }

    private bool exist(string uname)

    {

        string date = getNowDate();

        string date1 = "'" + date + " 00:00:01'";

        string date2 = "'" + date + " 23:59:59'";

        string anddate = " and [date]>=" + date1 + " and [date]<=" + date2;

        string strSql = "select * from apts   where uname=@u" + anddate;

        SqlParameter[] parameters = {

                                   new SqlParameter("@u", uname)};

        DataTable d = MOLE.SQL.GetDataTable(strSql.ToString(), parameters);

        if (d.Rows.Count == 0)

            return false;

        else

            return true;

    }

 

        string getNowDate()

    {

        DateTime dt = DateTime.Now;

        string s = string.Format("{0:yyyy-MM-dd}", dt);

        return s;

    }

      int getTimes(string uname)

    {

        inidb();

        string date = getNowDate();

        string date1 = "'"+date + " 00:00:01'";

        string date2 = "'" + date + " 23:59:59'";

        string anddate = " and [date]>=" + date1 + " and [date]<=" + date2;

        string strSql = "select * from apts   where uname=@u  " + anddate;

        SqlParameter[] parameters = {

                                   new SqlParameter("@u", uname)};

        DataTable d = MOLE.SQL.GetDataTable(strSql.ToString(), parameters);

        if (d.Rows.Count == 0)

            return 0;

        string s = d.Rows[0]["times"].ToString();

        return Int32.Parse(s);

    }

 

      int getMaxTimes()

    {

        return 3;

    }

 

        void inidb()

    {

        MOLE.SQL.connectionString = new SqlHelper().ConnStr;

        Maticsoft.DBUtility.DbHelperSQL.connectionString = MOLE.SQL.connectionString;

 

    }

 

 

 

 

      void clear(string uname)

    {

        inidb();

        int id = getid(uname);

        string strSql = "update apts set times=0 where uname=@u and id=" + id.ToString();

        SqlParameter[] parameters = {

                                   new SqlParameter("@u", uname)};

        MOLE.SQL.ExecuteSql(strSql.ToString(), parameters);

    }

 

 

 

    public void save(string Account, bool IsLoginValid)

    {

        if (IsLoginValid)

        {

            clear(Account);

        }

        else

        {

              add(Account);       // err times add 1

        }

    }

 

 

    public void check(string Account)

    {

        if (getTimes(Account) >= getMaxTimes())

            throw new Exception("E1:今日登录连续错误次数超过" + getMaxTimes().ToString() + ",请明日再试或者使用找回密码功能");

    }

 

 

  

}

内容概要:本文介绍了ENVI Deep Learning V1.0的操作教程,重点讲解了如何利用ENVI软件进行深度学习模型的训练与应用,以实现遥感图像中特定目标(如集装箱)的自动提取。教程涵盖了从数据准备、标签图像创建、模型初始化与训练,到执行分类及结果优化的完整流程,并介绍了精度评价与通过ENVI Modeler实现一键化建模的方法。系统基于TensorFlow框架,采用ENVINet5(U-Net变体)架构,支持通过点、线、面ROI或分类图生成标签数据,适用于多/高光谱影像的单一类别特征提取。; 适合人群:具备遥感图像处理基础,熟悉ENVI软件操作,从事地理信息、测绘、环境监测等相关领域的技术人员或研究人员,尤其是希望将深度学习技术应用于遥感目标识别的初学者与实践者。; 使用场景及目标:①在遥感影像中自动识别和提取特定地物目标(如车辆、建筑、道路、集装箱等);②掌握ENVI环境下深度学习模型的训练流程与关键参数设置(如Patch Size、Epochs、Class Weight等);③通过模型调优与结果反馈提升分类精度,实现高效自动化信息提取。; 阅读建议:建议结合实际遥感项目边学边练,重点关注标签数据制作、模型参数配置与结果后处理环节,充分利用ENVI Modeler进行自动化建模与参数优化,同时注意软硬件环境(特别是NVIDIA GPU)的配置要求以保障训练效率。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值