SuperSocket服务器架设(五):使用命令过滤器
来源:互联网 发布:ins社交软件官方下载 编辑:程序博客网 时间:2024/05/28 15:07
效果:禁止未被授权的连接执行某些命令,这里使用验证登陆为例。
1. 在MySession中添加bool类型的变量isLogin:
2. 创建类MyCommandFilterAttribute,继承自CommandFilterAttribute,并重写方法:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using SuperSocket.Common;using SuperSocket.SocketBase;using SuperSocket.SocketBase.Protocol;namespace SuperSocketApp1{ public class MyCommandFilterAttribute : CommandFilterAttribute { /// <summary> /// 命令监视器-执行命令前调用 /// </summary> /// <param name="commandContext"></param> public override void OnCommandExecuting(CommandExecutingContext commandContext) { //throw new NotImplementedException(); MySession session = commandContext.Session as MySession; //判断是否已登录 if (session != null && !session.isLogin) { //判断当前命令是否为LOGIN if (!commandContext.RequestInfo.Key.Equals("LOGIN")) { //取消执行当前命令 commandContext.Cancel = true; } } } /// <summary> /// 命令监视器-执行命令后调用 /// </summary> /// <param name="commandContext"></param> public override void OnCommandExecuted(CommandExecutingContext commandContext) { //throw new NotImplementedException(); } }}
3. 创建类LOGIN,模仿登陆过程:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using SuperSocket.SocketBase;using SuperSocket.SocketBase.Command;using SuperSocket.SocketBase.Protocol;namespace SuperSocketApp1.Command{ class LOGIN : CommandBase<MySession, StringRequestInfo> { public override void ExecuteCommand(MySession session, StringRequestInfo requestInfo) { session.isLogin = true; session.Send("登陆成功。"); } }}
4. 给要应用此过滤器的类添加属性
[MyCommandFilterAttribute] public class SEND : CommandBase<MySession, StringRequestInfo> { public override void ExecuteCommand(MySession session, StringRequestInfo requestInfo) { //此处省略N行代码 } }
5. 若要给所有的命令类应用此过滤器,则给MyServer添加属性
[MyCommandFilter] public class MyServer : AppServer<MySession> { }
0 0
- SuperSocket服务器架设(五):使用命令过滤器
- SuperSocket服务器架设(五):使用命令过滤器
- SuperSocket服务器架设(二):使用SuperSocket构建简单服务器
- SuperSocket服务器架设(二):使用SuperSocket构建简单服务器
- SuperSocket服务器架设(一):认识SuperSocket
- SuperSocket服务器架设(一):认识SuperSocket
- SuperSocket服务器架设(三):在SuperSocket中自定义Command、AppServer和AppSession
- SuperSocket服务器架设(三):在SuperSocket中自定义Command、AppServer和AppSession
- SuperSocket服务器架设(四):我的AppSession连接管理方案(简单版)
- SuperSocket服务器架设(四):我的AppSession连接管理方案(简单版)
- 使用CesarFTP架设FTP服务器
- SuperSocket使用问题收集
- SuperSocket
- SuperSocket
- 基于SuperSocket实现的WebSocket服务器 和Unity中使用Websocket
- 使用Apache&花生壳架设Web服务器
- 使用Solaris架设FTP虚拟服务器
- 架设git服务器--使用git-daemon
- 把你的产品发到微店网上来,让190万微店(还在每天增加3万微店)为你免费推广!http://www.2226859.okwei.com/gy.html
- IOS学习日志(三)------视图控制器
- 线段覆盖
- GetMapMode
- 计算机图形学--多边形扫瞄转换与区域填充实现
- SuperSocket服务器架设(五):使用命令过滤器
- ZOJ-1715
- Mongodb安装及简单的CURD操作
- 于家中计算机安装 FreeSSHd, 让办公室计算机连回家中计算机建立 SSH Tunnel, 突破公司上网限制
- Android系统联系人全特效实现(下),字母表快速滚动
- 第三次训练——The ? 1 ? 2 ? ... ? n = k problem
- win8下ie10打不开了
- 两位数乘法的速算方法(二)
- JavaSE —— 标准输入/输出