一个简单的Memcached在Net中运用的一个demo。主要技术 Dapper+MVC+Memcached+sqlserver,

开发工具为vs2015+Sql

效果图如下:

登录后

解决方案

主要实现代码

using Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using website.Models;
namespace website.Controllers
{
public class LoginController : Controller
{
// GET: Login
BLL.Users service = new BLL.Users();
public ActionResult Index()
{
return View();
}
[HttpPost]
public ActionResult Login(string username,string password)
{
int count = ;
try
{
count=service.Count(" where username='"+username+"' and password='"+password+"' "); if (count == )
{
return Json(new { success = false, msg = "用户名或密码不正确" });
}
else
{ var loginUser = service.QueryList(" where username='" + username + "' and password='" + password + "' ").SingleOrDefault(); Guid sessionId = Guid.NewGuid();//申请了一个模拟的GUID:SessionId //把sessionid写到客户端浏览器里
Response.Cookies["sessionId"].Value = sessionId.ToString(); //可以缓存model 也可缓存list
MemcacheHelper.Set(sessionId.ToString(), loginUser, DateTime.Now.AddMinutes());
return Json(new { success = true, msg = "登陆成功" });
}
} catch(Exception ex)
{
return Json(new { success = false, msg = ex.Message }); } } }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Model;
using System.Net.Http;
using website.Models; namespace website.Controllers
{
public class BaseController : Controller
{
BLL.Users service = new BLL.Users(); protected string hostUrl = "";
Users currentuser = new Users(); public ActionResult Layout()
{
Users user = GetCurrentUser();
ViewData["username"] = user.UserName;
ViewData["TrueName"] = user.TrueName;
return View("~/Views/Shared/_MyLayout.cshtml");
// return View();
} /// <summary>
/// Action执行前判断
/// </summary>
/// <param name="filterContext"></param>
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{ base.OnActionExecuting(filterContext); //从cookie中获取登录的sessionId
string sessionId = Request["sessionId"];
if (string.IsNullOrEmpty(sessionId))
{ Response.Redirect("/Login/Index");
} object obj = MemcacheHelper.Get(sessionId); Users user = obj as Users;
if (user == null)
{
Response.Redirect("/Login/Index");
} currentuser = user;
MemcacheHelper.Set(sessionId, user, DateTime.Now.AddMinutes()); } /// <summary>
/// 判断是否登录
/// </summary>
protected bool checkLogin()
{
//HttpCookie _cookie = httpContext.Request.Cookies["CookieUser"];
if (this.Session["userinfo"] == null)
{
return false;
}
return true;
}
/// <summary>
/// 返回当前登录用户
/// </summary>
/// <returns></returns>
protected Users GetCurrentUser()
{
if (checkLogin())
{
currentuser = service.QueryList(" where username='" + this.Session["userinfo"].ToString() + "'").SingleOrDefault();
}
return currentuser;
} }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Memcached.ClientLibrary; namespace website.Models
{
public static class MemcacheHelper
{
private static MemcachedClient mc; static MemcacheHelper()
{
String[] serverlist = { "127.0.0.1:11211" }; // initialize the pool for memcache servers
SockIOPool pool = SockIOPool.GetInstance("test");
pool.SetServers(serverlist);
pool.Initialize();
mc = new MemcachedClient();
mc.PoolName = "test";
mc.EnableCompression = false; } public static bool Set(string key, object value,DateTime expiry){
return mc.Set(key, value, expiry);
} public static object Get(string key)
{
return mc.Get(key);
}
}
}

总结:自己练习的Demo,有很多地方不完善,欢迎指正!!

https://yunpan.cn/c63VD4ekxn78b  访问密码 2f97

【原创】基于Memcached 实现用户登录的Demo(附源码)的更多相关文章

  1. 一个简单的IM系统(Demo附源码)-- ESFramework 4.0 快速上手(08)

    前面的文章已经介绍完了基于ESFramework/ESPlus进行二次开发的所有要点,现在,我们可以开始小试牛刀了. 本文将介绍使用ESFramework的Rapid引擎开发的两个最简单的Demo,E ...

  2. struts1实现简单的登录功能(附源码)

    环境:MyEclipse 14                                                                                     ...

  3. 干货——基于Nop的精简版开发框架(附源码)

    .NET的开发人员应该都知道这个大名鼎鼎的高质量b2c开源项目-nopCommerce,基于EntityFramework和MVC开发,拥有透明且结构良好的解决方案,同时结合了开源和商业软件的最佳特性 ...

  4. [原创]Net实现Excel导入导出到数据库(附源码)

    关于数据库导出到Excel和SQLServer数据导出到Excel的例子,在博客园有很多的例子,自己根据网上搜集资料,自己做了亦歌简单的demo,现在分享出来供初学者学习交流使用. 一.数据库导入导出 ...

  5. 基于Python接口自动化测试框架(初级篇)附源码

    引言 很多人都知道,目前市场上很多自动化测试工具,比如:Jmeter,Postman,TestLink等,还有一些自动化测试平台,那为啥还要开发接口自动化测试框架呢?相同之处就不说了,先说一下工具的局 ...

  6. Java:基于AOP的动态数据源切换(附源码)

    1 动态数据源的必要性 我们知道,物理服务机的CPU.内存.存储空间.连接数等资源都是有限的,某个时段大量连接同时执行操作,会导致数据库在处理上遇到性能瓶颈.而在复杂的互联网业务场景下,系统流量日益膨 ...

  7. Docker Compose部署项目到容器-基于Tomcat和mysql的商城项目(附源码和sql下载)

    场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...

  8. 基于Struts2+Hibernate开发小区物业管理系统 附源码

    开发环境: Windows操作系统开发工具: MyEclipse+Jdk+Tomcat+MySql数据库 运行效果图: 源码及原文链接:https://javadao.xyz/forum.php?mo ...

  9. 基于Python接口自动化测试框架+数据与代码分离(进阶篇)附源码

    引言 在上一篇<基于Python接口自动化测试框架(初级篇)附源码>讲过了接口自动化测试框架的搭建,最核心的模块功能就是测试数据库初始化,再来看看之前的框架结构: 可以看出testcase ...

随机推荐

  1. 【nginx】常见的陷阱和错误

    很多人都可以碰到一个陷阱.下面我们列出,我们经常看到的问题,以及解释如何解决这些问题.在Freenode上的#nginx IRC频道这些讨论很频繁. 1.权限 从来不要使用777权限,查看目录的权限 ...

  2. Redis系列(二)—— 数据类型及其使用

    Redis数据类型及其使用 参考:http://www.cnblogs.com/jackluo/p/3173436.html Redis支持五种数据类型:string(字符串),hash(哈希),li ...

  3. windows 下安装nginx

    1.首先去官网下载 nginxWindows版本,官网下载:http://nginx.org/en/download.html 选择最新版本,下载到软件包后,解压文件包到指定目录,例如我的目录是D:\ ...

  4. JavaScript中奇葩的假值

    通常在以下语句结构中需要判断真假 if分支语句 while循环语句 for里的第二个语句 如 if (boo) { // do something } while (boo) { // do some ...

  5. linux chromuim安装常用插件(flash,手势,拖拽,广告屏蔽)

    1.本机kali2.0  64位,kali基于Debian.文章所用的所有插件请到http://files.cnblogs.com/files/yuuyuu/chromium_plugins.tar. ...

  6. 浅谈export 以及环境变量

    简要说一下env,set,export的区别:env命令显示环境变量,set和export显示环境变量和自定变量. export:可以讲自定变量转化为环境变量之前有一个疑惑,我们定义环境变量PATH时 ...

  7. Can't initialize metastore for hive

    there maybe many reason to cause this,today our issue is that, if you execute hive –database dbname ...

  8. LeetCode题解-----First Missing Positive

    Given an unsorted integer array, find the first missing positive integer. For example,Given [1,2,0]  ...

  9. 从c到c++

    1,stack模板类(头文件为<stack>)需要定义两个参数:元素类型(必要).容器类型(默认为deque), 定义stack对象 stack <string> s 基本操作 ...

  10. [3D跑酷] GUIManager UI管理

    UI元素更新及界面跳转 继上篇日志<Unity开发之 GUIClickEventReceiver>,再谈一下我们如何管理游戏中的UI元素更新及界面跳转 UI绑定 图一:Inspector面 ...