一个简单的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. redis AOF保存机制

    网上说AOF有三种保存方式,不自动保存.每秒自动保存.每命令自动保存. 其中每秒自动保存这个看起来很美好,但是可能会被各种IO的时间所延迟,所以究竟是怎么判断每秒保存的,并不是太明白,故有此文. AO ...

  2. HTML5 datalist 标签

    以前需要用JS写一个自动完成组件(Suggest),很费劲.HTML5时代则不用了,直接使用datalist标签,直接减少了工作量.如下 <!DOCTYPE html> <html& ...

  3. python ljust,rjust,center,zfill对齐使用方法

    字符串在输出时的对齐:S.ljust(width,[fillchar]) #输出width个字符,S左对齐,不足部分用fillchar填充,默认的为空格. S.rjust(width,[fillcha ...

  4. hdu Flow Problem (最大流 裸题)

    最大流裸题,贴下模版 view code#include <iostream> #include <cstdio> #include <cstring> #incl ...

  5. Hadoop,Vertica环境搭建

    本打算使用mapr的虚拟机在里面进行开发,使用eclipse进行调试,它的问题是,有时候服务不能完全起来, 如jobtracker和tasktracker,cldb没有起来,重启服务有可能解决. 但另 ...

  6. 译文:Nesting Your BEM?

    原文链接:http://csswizardry.com/2016/11/nesting-your-bem/ 在我开始这篇文章之前,我得说这不是一个建议或者是新的"练习指南".这只是 ...

  7. 【实践】获取CKEditor的html文本、纯文本、被选中的内容及赋值

      <%=Html.TextAreaFor(Model => Model.WORK_INTRODUCTION)%> <script type="text/javasc ...

  8. UVALive 6269 Digital Clock --枚举,模拟

    题意:说不清楚,自己看吧,太恶心. 这题真是SB了,当时看了一下以为乱搞就好了,于是开始动手拍,结果拍了好几个小时都没拍出来,而且越想越想不通,直接把自己绕进去了,结果gg了. 总结:甭管什么题,想清 ...

  9. Hamilton回路的判定与构造

    定理1:在一个具有n个顶点的无向连通图G中,如果任意两个顶点的度数之和大于n,则G具有Hamilton回路.此条件为充分条件 定理2:设图G = <V,E>,是Hamilton图,则对于v ...

  10. 类似区间计数的种类并查集两题--HDU 3038 & POJ 1733

    1.POJ 1733 Parity game Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5744   Accepted: ...