前面几篇分享了nosql只mongodb,今天简单分享另一个nosql神兵redis。

  主要模仿sso单点登录,将登录人信息写入redis。话不多说,直接上马,驾。

     /// <summary>
///
/// </summary>
/// <param name="name"></param>
/// <param name="pass"></param>
/// <returns></returns>
public string Login(string name, string pass)
{
//******
//name,pass登陆成功(^_^)
//******
//生成tokan
var token = "tianshangbaiyujing";//Guid.NewGuid().ToString();
//*****获取user信息
var user = new User();
user.Name = "白玉京";
user.Sex = ;
user.Age = ;
user.Address = "杭州";
//*****
//*****将登录人信息信息redis缓存
HashEntry[] entrys = new HashEntry[];//数组对象长度一定要和下面SetValue赋值一一对应
HashEntry entry = new HashEntry("Name", user.Name);
entrys.SetValue(entry, );
entry = new HashEntry("Sex", user.Sex);
entrys.SetValue(entry, );
entry = new HashEntry("Age", user.Age);
entrys.SetValue(entry, );
entry = new HashEntry("Address", user.Address);
entrys.SetValue(entry, );
TimeSpan ts = new TimeSpan();//默认1天
RedisHelper.AddHashKey(token, entrys, ts);
//*****
//*****将user信息存入userSession对象返回给前端
var session = new UserSession() { Token = token, User = user };
//*****
return JsonConvert.SerializeObject(session);
}
/// <summary>
///
/// </summary>
/// <param name="token"></param>
/// <returns></returns>
public string TestUserToken(string token)
{
var arr = RedisHelper.GetHashALL(token);
User user = new User();
user.Name = arr[].Value;
user.Sex = (int)arr[].Value;
user.Age = (int)arr[].Value;
user.Address = arr[].Value;
return JsonConvert.SerializeObject(user);
}
/// <summary>
/// UserSession
/// </summary>
public class UserSession
{
public string Token { get; set; }
public User User { get; set; }
}
/// <summary>
/// User
/// </summary>
public class User
{
/// <summary>
/// 姓名
/// </summary>
public string Name { get; set; }
/// <summary>
/// 性别0:男,1:女
/// </summary>
public int Sex { get; set; }
/// <summary>
/// 年龄
/// </summary>
public int Age { get; set; }
/// <summary>
/// 地址
/// </summary>
public string Address { get; set; }
}

  redisHelper类。

      static readonly ConnectionMultiplexer Redis = ConnectionMultiplexer.Connect("127.0.0.1:6379");
static readonly IDatabase Db = Redis.GetDatabase();  /// <summary>
///
/// </summary>
/// <param name="key"></param>
/// <param name="hashField"></param>
/// <param name="exp"></param>
public static void AddHashKey(string key, HashEntry[] hashField, TimeSpan? exp = null)
{
Db.HashSet(key, hashField);
Db.KeyExpire(key, exp);
}
  /// <summary>
/// 获取hash表
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
public static HashEntry[] GetHashALL(string key)
{
return Db.HashGetAll(key);
}

  两个方法运行结果

  

  写了半天,贴两分钟完事了,再贴几张redisServer启动吧,都是cmd命令,跟mongo很像,就不细说了。

  启动客户端看下刚才存的数据。

  这样登录完成后,每次请求接口带上token就可以获取登录信息了。

简单使用redis实现sso单点登录的更多相关文章

  1. 170810、spring+springmvc+Interceptor+jwt+redis实现sso单点登录

    在分布式环境中,如何支持PC.APP(ios.android)等多端的会话共享,这也是所有公司都需要的解决方案,用传统的session方式来解决,我想已经out了,我们是否可以找一个通用的方案,比如用 ...

  2. redis实现SSO单点登录,集群,分布式锁

    https://blog.csdn.net/aussme/article/details/80660443

  3. .NET基于Redis缓存实现单点登录SSO的解决方案[转]

    一.基本概念 最近公司的多个业务系统要统一整合使用同一个登录,这就是我们耳熟能详的单点登录,现在就NET基于Redis缓存实现单点登录做一个简单的分享. 单点登录(Single Sign On),简称 ...

  4. .NET基于Redis缓存实现单点登录SSO的解决方案

    一.基本概念 最近公司的多个业务系统要统一整合使用同一个登录,这就是我们耳熟能详的单点登录,现在就NET基于Redis缓存实现单点登录做一个简单的分享. 单点登录(Single Sign On),简称 ...

  5. Redis缓存实现单点登录SSO

    .NET基于Redis缓存实现单点登录SSO的解决方案 .NET基于Redis缓存实现单点登录SSO的解决方案   一.基本概念 最近公司的多个业务系统要统一整合使用同一个登录,这就是我们耳熟能详的单 ...

  6. .NET Core2.0+MVC 用Redis/Memory+cookie实现的sso单点登录

    之前发布过使用session+cookie实现的单点登录,博主个人用的很不舒服,为什么呢,博主自己测试的时候,通过修改host的方法,在本机发布了三个站点,但是,经过测试,发现,三个站点使用的sess ...

  7. 使用 JSONP 实现简单的 SSO 单点登录

    SSO 即 Single Sign On(单点登录).  一.二级域名之间的单点登录 不需要用到JSONP 或者 p3p 协议,直接使用 COOKIE 就行了,因为顶级域名相同就能实现 COOKIE ...

  8. SSO 单点登录简单流程(cas)

    配置服务端(链接数据库) 第一步: 下载cas-server端,解压开, 将中的解压开,将该包中的内容放入cas文件夹(新建文件夹)中 然后将这个文件夹放入到服务端的服务器(tomcat)中 将解压开 ...

  9. SpringCloud系列——SSO 单点登录

    前言 作为分布式项目,单点登录是必不可少的,文本基于之前的的博客(猛戳:SpringCloud系列——Zuul 动态路由,SpringBoot系列——Redis)记录Zuul配合Redis实现一个简单 ...

随机推荐

  1. oracle中print_table存储过程介绍

    一直以来,觉得MySQL中使用\G参数改变输出结果集的显示方式非常好用,尤其是在命令行界面.但是ORACLE数据库没有这个功能,今天在搜索到Tom大师的一篇博文时,发现大师用一个存储过程print_t ...

  2. MyBatis笔记----报错:Exception in thread "main" org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)解决方法

    报错 Exception in thread "main" org.apache.ibatis.binding.BindingException: Invalid bound st ...

  3. HTML表单 CSS样式

    1.HTML表单 <body rightmargin="50" leftmargin="50" background="未标题-1.jpg&qu ...

  4. mssql 系统函数-字符串函数专题--字符串函数大全

    mssql 系统函数 字符串函数 substring 功能简介 mssql 系统函数 字符串函数 stuff 功能简介 mssql 系统函数 字符串函数 str 功能简介 mssql 系统函数 字符串 ...

  5. 洗礼灵魂,修炼python(85)-- 知识拾遗篇 —— 深度剖析让人幽怨的编码

    编码 这篇博文的主题是,编码问题,老生常谈的问题了对吧?从我这一套的文章来看,前面已经提到好多次编码问题了,的确这个确实很重要,这可是难道了很多能人异士的,当你以为你学懂了,在研究爬虫时你发现你错了, ...

  6. org.hibernate.NonUniqueObjectException

    错误如下: 2017-3-29 15:17:52~ERROR~org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV ...

  7. C#批量向数据库插入数据

    程序中,批量插入数据有两种思路. 1.用for循环,一条一条的插入,经实测,这种方式太慢了(插入一万条数据至少都需要6-7秒),因为每次插入都要打开数据库连接,执行sql,关闭连接,显然这种方式不可行 ...

  8. Hadoop下添加节点和删除节点

    添加节点 1.修改host   和普通的datanode一样.添加namenode的ip 2.修改namenode的配置文件conf/slaves   添加新增节点的ip或host 3.在新节点的机器 ...

  9. margin-left:-20px

    对于负的margin值,设置其作用时要和position:absolute;一起使用

  10. Error: client: etcd cluster is unavailable or misconfigured; error #0: dial tcp 127.0.0.1:4001: getsockopt: connection refused

    配置docker网络flannel时,配置etcd的key的时候出现以下错误 Error:  client: etcd cluster is unavailable or misconfigured; ...