简单使用redis实现sso单点登录
前面几篇分享了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单点登录的更多相关文章
- 170810、spring+springmvc+Interceptor+jwt+redis实现sso单点登录
在分布式环境中,如何支持PC.APP(ios.android)等多端的会话共享,这也是所有公司都需要的解决方案,用传统的session方式来解决,我想已经out了,我们是否可以找一个通用的方案,比如用 ...
- redis实现SSO单点登录,集群,分布式锁
https://blog.csdn.net/aussme/article/details/80660443
- .NET基于Redis缓存实现单点登录SSO的解决方案[转]
一.基本概念 最近公司的多个业务系统要统一整合使用同一个登录,这就是我们耳熟能详的单点登录,现在就NET基于Redis缓存实现单点登录做一个简单的分享. 单点登录(Single Sign On),简称 ...
- .NET基于Redis缓存实现单点登录SSO的解决方案
一.基本概念 最近公司的多个业务系统要统一整合使用同一个登录,这就是我们耳熟能详的单点登录,现在就NET基于Redis缓存实现单点登录做一个简单的分享. 单点登录(Single Sign On),简称 ...
- Redis缓存实现单点登录SSO
.NET基于Redis缓存实现单点登录SSO的解决方案 .NET基于Redis缓存实现单点登录SSO的解决方案 一.基本概念 最近公司的多个业务系统要统一整合使用同一个登录,这就是我们耳熟能详的单 ...
- .NET Core2.0+MVC 用Redis/Memory+cookie实现的sso单点登录
之前发布过使用session+cookie实现的单点登录,博主个人用的很不舒服,为什么呢,博主自己测试的时候,通过修改host的方法,在本机发布了三个站点,但是,经过测试,发现,三个站点使用的sess ...
- 使用 JSONP 实现简单的 SSO 单点登录
SSO 即 Single Sign On(单点登录). 一.二级域名之间的单点登录 不需要用到JSONP 或者 p3p 协议,直接使用 COOKIE 就行了,因为顶级域名相同就能实现 COOKIE ...
- SSO 单点登录简单流程(cas)
配置服务端(链接数据库) 第一步: 下载cas-server端,解压开, 将中的解压开,将该包中的内容放入cas文件夹(新建文件夹)中 然后将这个文件夹放入到服务端的服务器(tomcat)中 将解压开 ...
- SpringCloud系列——SSO 单点登录
前言 作为分布式项目,单点登录是必不可少的,文本基于之前的的博客(猛戳:SpringCloud系列——Zuul 动态路由,SpringBoot系列——Redis)记录Zuul配合Redis实现一个简单 ...
随机推荐
- OneAPM大讲堂 | 提高JavaScript性能的30个技巧
文章系国内领先的 ITOM 管理平台供应商 OneAPM 编译呈现. 您是网站管理员还是网页开发人员?想创建超快速的网站吗? 今天我们来看看 JavaScript,这项神奇而又复杂的技术.它使网站内容 ...
- Orchard详解--第五篇 CacheManager
上一篇文章介绍了Orchard中的缓存,本篇主要针对CacheManager进行分析,CacheManager在Orchard中用于存储应用程序的配置信息以及框架内部的一些功能支持,包括整个拓展及拓展 ...
- Add correct host key in /root/.ssh/known_hosts to get rid of this message
bug: Add correct host key in /root/.ssh/known_hosts to get rid of this message 解决办法: rm ~/.ssh/known ...
- ueditor在线编辑器的简单使用-上传图片
由于我的项目个人博客网站需要用到在线编辑器,百度的ueditor编辑器就是一个很好的编辑器.开始比较迷茫的使用,各种百度,没有我满意的答案,明明可以很简单的使用. 1.首先进入ueditor官网下载, ...
- 自动化测试基础篇--Selenium Xpath定位
摘自https://www.cnblogs.com/sanzangTst/p/7458056.html 学习 什么是xpath? XPath即为XML路径语言,它是一种用来确定XML(标准通用标记语言 ...
- spreadJs 自动换行功能和自动增高行高
var styleTmp = sheet.getStyle(displayRowIndex, displayColumnIndex, GcSpread.Sheets.SheetArea.viewpor ...
- Linux内核线程kernel thread详解--Linux进程的管理与调度(十)
内核线程 为什么需要内核线程 Linux内核可以看作一个服务进程(管理软硬件资源,响应用户进程的种种合理以及不合理的请求). 内核需要多个执行流并行,为了防止可能的阻塞,支持多线程是必要的. 内核线程 ...
- vue中$router.push打开新窗口
在vue中使用 this.$router.push({ path: '/home' }) 默认是替代本窗口 如果想新开一个窗口,可以使用下面的方式: let routeData = this.$ro ...
- Spring国际化模块
1.Spring3.1.0实现原理分析(二).国际化(i18n) https://blog.csdn.net/roberts939299/article/details/69666291
- 基于BeautifulSoup库的HTML内容的查找
一.BeautifulSoup库提供了一个检索的参数: <>.find_all(name,attrs,recursive,string,**kwargs),它返回一个列表类型,存储查找的结 ...