using System.Data;
using CSFrameworkV4_5.Common;
using CSFrameworkV4_5.Core.SystemSecurity;
using CSFrameworkV4_5.Models;
using CSFrameworkV4_5.Server.DataAccess.DAL_Permission; namespace CSFrameworkV4_5.WCFContract
{
/// <summary>
///服务端:WCF服务层安全检查核心类
/// </summary>
public static class WebSecurity
{
/// <summary>
/// 检查客户端恶意访问后台
/// </summary>
private static bool _AttackValidation = false; /// <summary>
/// 是否检查客户端恶意攻击
/// </summary>
public static bool AttackValidation
{
get { return _AttackValidation; }
set { _AttackValidation = value; }
} /// <summary>
/// 用户登录的验证码,防止用户恶意攻击Login接口.
/// </summary>
/// <param name="identity">验证码</param>
/// <returns></returns>
public static bool ValidateLoginIdentity(byte[] identity)
{
//是否连续攻击
if (WebSecurity.AttackValidation) AttackRecorder.IsAttack(); bool isIdentity = WebServiceSecurity.ValidateLoginIdentity(identity);
return isIdentity;
} public static Loginer ValidateLoginer(byte[] loginTicket)
{
//是否连续攻击
if (WebSecurity.AttackValidation) AttackRecorder.IsAttack(); //加密令牌解析成功
Loginer user = WebServiceSecurity.ValidateLoginer(loginTicket); //检查用户名及密码
if (!ActivityUserCache.ValidateUser(user.Account, user.Password))
throw new CustomException("用户名或密码不正确!"); return user;
} /// <summary>
/// 检查用户登录凭证,并且检查两次访问时间
/// </summary>
/// <param name="loginer">用户登录凭证</param>
/// <param name="checkAttack">检查连续调用方法攻击</param>
/// <returns></returns>
public static Loginer ValidateLoginer(byte[] loginTicket, bool checkAttack)
{
if (checkAttack) AttackRecorder.IsAttack(); //加密令牌解析成功
Loginer user = WebServiceSecurity.ValidateLoginer(loginTicket); //检查用户名及密码
if (!ActivityUserCache.ValidateUser(user.Account, user.Password))
throw new CustomException("用户名或密码不正确!"); return user;
} } }

服务端:WCF服务层安全检查核心类的更多相关文章

  1. 【HLSDK系列】服务端实体 edict_t 和 控制类

    我们来了解一下引擎是怎么管理实体的吧!我们这里就说说服务端的实体(edict_t) 服务端用 edict_t 这个结构体来保存一个实体,可以说一个 edict_t 就是一个 服务端实体,下文简称实体. ...

  2. Netty 学习(五):服务端启动核心流程源码说明

    Netty 学习(五):服务端启动核心流程源码说明 作者: Grey 原文地址: 博客园:Netty 学习(五):服务端启动核心流程源码说明 CSDN:Netty 学习(五):服务端启动核心流程源码说 ...

  3. 结合实际需求,在webapi内利用WebSocket建立单向的消息推送平台,让A页面和服务端建立WebSocket连接,让其他页面可以及时给A页面推送消息

    1.需求示意图 2.需求描述 原本是为了给做unity3d客户端开发的同事提供不定时的消息推送,比如商城购买道具后服务端将道具信息推送给客户端. 本篇文章简化理解,用“相关部门开展活动,向全市人民征集 ...

  4. cocos2d-lua ARPG手机游戏《烈焰遮天》(客户端+服务端+数据库)发布说明

    服务器发布流程及其规范1,环境准备        a, mvn命令行:从\\10.21.210.161\share\tools\apache-maven-3.1.1-bin.tar.gz取出安装包,  ...

  5. 3、Spring Cloud - Eureka(构建服务端/客户端)

    3.1.Eureka简介 3.1.1.什么是 Eureka 和Consul.Zookeeper 类似, Eureka 是一个用于服务注册和发现的组件,最开始主要应用 于亚马逊公司旗下的云计算服务平台 ...

  6. java在线聊天项目1.1版 ——开启多个客户端,分别实现注册和登录功能,使用客户端与服务端信息request机制,重构线程,将单独的登录和注册线程合并

    实现效果图: eclipse项目中初步整合之前的各个客户端和服务端的窗口与工具类,效果如下图: 已将注册服务器线程RegServer功能放到LoginServer中,使用客户端与服务端的request ...

  7. python的flex服务端数据接口开发

    python的flex服务端数据接口开发 python 如果给flex提供服务端,需要提供一个网关和一个可供客户端(flex)调用的类.这方面我更加推荐用twisted来写这个网关,因为twisted ...

  8. zookeeper源码之服务端

    zookeeper服务端主要包括一下几个模块:     1.启动模块. 2.核心执行模块 3.数据管理模块. 启动模块 读取配置文件,启动程序.详见:zookeeper源码之服务端启动模块. 核心执行 ...

  9. WCF学习心得--客户端获取服务端自定义类数据

    因项目需求,需要一个WCF服务,赶鸭子上架吧!下面直接切入正题! 首先创建WCF应用程序,具体如何创建就不赘述了,网上一大篇,我主要说说自己遇到的问题 问题一:超时问题,在最后获取数据的时候突然提示服 ...

随机推荐

  1. python3入门之基础语法

    Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言.Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法 ...

  2. System的两常用个静态方法

    package cn.learn; /* System类在java.lang.System,和操作系统有关 1.currentTimeMillis直接调用,是一个返回为long型的静态方法 常用来计算 ...

  3. no suitable HttpMessageConverter found for response type

    在使用 RestTemplate 或者 Spring Cloud 的时候,经常会出现这个错误. 基本上出现的场景都是,我们要json,结果来了个 text/html. 两个原因: 第一个就是:服务器返 ...

  4. SQL 查询中not in 与 not exists 的区别

    1.in和exists in是把外表和内表作hash连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询,一直以来认为exists比in效率高的说法是不准确的.如果查询的两个表 ...

  5. struts2的action方法匹配以及通配符的使用

    1. ActionMethod:Action执行的时候并不一定要执行execute方法,可以在配置文件中配置action的时候用"method"属性来指定执行哪个方法,也可以在ur ...

  6. matlab批量修改变量的名称

    使用matlab做实验的时候,保存的文件里面的变量名都是一样的 ,所以希望能够把变量名全部都重命名.我举个个例子,假设我一堆文件,文件名分别是gds1,gds2,gds2,-.. 但是实际上load进 ...

  7. 阿里云centos下搭建vsftpd,被动模式出现的问题

    最近计网课设要做一个ftp服务端,所以先在自己服务器搭一个来了解一下. 首先在默认情况下连接,227 Entering Passive Mode (192,168,*,*,227,175). 显示连接 ...

  8. 四、局域网连接SqlServer

    一.局域网连接SqlServer 一台服务器上装有四个数据库的时候,我们可以通过IP\实例名的方式进行访问. navicat 连接sqlserver数据库

  9. django项目中账号注册登陆使用JWT的记录

    需求分析 1.  注册用JWT做状态保持    1.1 安装jwt    pip install djangorestframework-jwt        1.2 去settings里面配置jwt ...

  10. Sass-减法

    Sass 的减法运算和加法运算类似,我们通过一个简单的示例来做阐述: 同样的,运算时碰到不同类型的单位时,编译也会报错,如: