分布式缓存HttpRuntime.cache应用到单点登陆中_优化登陆
2009-07-06 00:15
288 查看
Code
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.Caching;
namespace HttpRuntimeCacheDE.Cache
{
public class CacheFunc:CacheBase
{
protected override string BuildCacheKey(CacheParam param)
{
LoginStatusParam lsparam = param as LoginStatusParam;
return param.GetType().Name.ToString() + "&" + lsparam.SysLoginStatusID + "&" + lsparam.LoginName;
}
/// <summary>
/// 在Cache中查询在线用户
/// </summary>
/// <param name="param">在线用户参数</param>
public List<LoginStatusParam> QueryLoginStatus(LoginStatusParam param)
{
List<LoginStatusParam> result = new List<LoginStatusParam>();
List<LoginStatusParam> plist = ConvertCacheItem();
var loginResult = from c in plist
where 1 == 1
&& (!Judgement(param.SysLoginStatusID) ? true : c.SysLoginStatusID == param.SysLoginStatusID)
&& (!Judgement(param.SysOrganizationID) ? true : c.SysOrganizationID == param.SysOrganizationID)
&& (!Judgement(param.SysServiceCenterID) ? true : c.SysServiceCenterID == param.SysServiceCenterID)
&& (!Judgement(param.LoginName) ? true : c.LoginName == param.LoginName)
&& (!Judgement(param.LoginTime) ? true : c.LoginTime == param.LoginTime)
&& (!Judgement(param.LastHandleTime) ? true : c.LastHandleTime == param.LastHandleTime)
&& (!Judgement(param.FullName) ? true : c.FullName == param.FullName)
&& (!Judgement(param.LoginToken) ? true : c.LoginToken == param.LoginToken)
select c;
result = loginResult.ToList<LoginStatusParam>();
return result;
}
// 将Cache中的项转换成List
private List<LoginStatusParam> ConvertCacheItem()
{
List<LoginStatusParam> plist = new List<LoginStatusParam>();
IDictionaryEnumerator CacheEnum = HttpRuntime.Cache.GetEnumerator();
while (CacheEnum.MoveNext())
{
if (CacheEnum.Value is LoginStatusParam)
plist.Add(CacheEnum.Value as LoginStatusParam);
}
return plist;
}
public string SysUserLogin(LoginStatusParam param)
{
AddLoginStatus(param);
param = QueryLoginStatus(param).First();
return param.LoginToken;
}
#region AddMethod
/// <summary>
/// 在Cache中增加在线用户
/// </summary>
/// <param name="param">在线用户参数</param>
public void AddLoginStatus(LoginStatusParam param)
{
Random random = new Random();
param.SysLoginStatusID = random.Next().ToString();
SyncCacheData(param, CacheOperation.Add);
SendCacheData(param, CacheOperation.Add);
}
#endregion
private bool Judgement(object obj)
{
try
{
if (obj != null && obj != DBNull.Value)
{
return true;
}
else
{
return false;
}
}
catch (Exception ex)
{
throw ex;
}
}
}
}
相关文章推荐
- 项目经验之:分布式缓存HttpRuntime.cache应用到单点登陆中_优化登陆
- 分布式缓存HttpRuntime.cache应用到单点登陆中_优化登陆
- HttpRuntime.Cache缓存数据
- 如何获取HttpRuntime.Cache缓存所有的KEY
- 缓存 HttpContext.Current.Cache和HttpRuntime.Cache的区别
- 应用优化-HTTP缓存 推荐
- .NET使用HttpRuntime.Cache设置程序定时缓存
- HttpRuntime.Cache 与 static Dictionary 缓存
- 清除System.Web.HttpRuntime.Cache缓存
- 缓存通用管理类 + 缓存 HttpContext.Current.Cache 和 HttpRuntime.Cache 的区别
- 基于HTTP缓存轻松实现客户端应用的离线支持及网络优化
- HttpRuntime.Cache再学习
- HttpContext.Current.Cache 和 HttpRuntime.Cache 区别
- 一篇文读懂缓存在大型分布式系统中的最佳应用
- 大型网站架构系列:缓存在分布式系统中的应用(一)
- 大型网站架构系列:缓存在分布式系统中的应用(一)
- 利用负载均衡优化和加速HTTP应用
- 【系统架构】大型网站架构系列:缓存在分布式系统中的应用(二)
- servlet response应用五:发送http头,控制浏览器禁止缓存当前文档内容
- WordPress优化之利用Nginx fastcgi_cache缓存加速