简单使用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实现一个简单 ...
随机推荐
- Appium+java 获取元素状态
元素的属性我们经常会用到,当定位到某个元素后,有时会需要用到这个元素的text值.className.resource-id.checked等. 一般标准的属性我们都可以通过get_attribut ...
- python LeetCode 两数相除
近一个月一直在写业务,空闲时间刷刷leetcode,刷题过程中遇到了一道比较有意思的题目,和大家分享. 题目描述: 给定两个整数,被除数 dividend 和除数 divisor.将两数相除,要求不使 ...
- Bayboy功能详解
Bayboy功能详解 一.Badboy中的检查点 1.1以sogou.com搜索为例,搜索测试 步骤:打开Badboy工具,在地址栏中输入搜狗网址:输入 测试 进行搜索:点击红色按钮停止录制 1.2添 ...
- java导出数据到excel里:直接导出和导出数据库数据
一.直接导出 package com.ij34.util; import java.io.FileNotFoundException; import java.io.FileOutputStream; ...
- [20190101]块内重整.txt
[20190101]块内重整.txt --//我不知道用什么术语表达这样的情况,我仅仅一次开会对方这么讲,我现在也照用这个术语.--//当dml插入数据到数据块时,预留一定的空间(pctfree的百分 ...
- 如何解决远程连接mysql出现Can’t connect to MySQL server on (111 “Connection refused”)的问题
如何解决远程连接mysql出现Can’t connect to MySQL server on (111 “Connection refused”)的问题 开放Mysql的远程连接 在服务器上登录my ...
- Microsoft SQL Server sa 账户 登录错误18456
分析:在安装Sql server 2012的时候,服务器身份验证没有选择“SQL Server 和 Windows身份验证模式(S)”,导致SQL Server身份验证方式被禁用. 操作: 以Wind ...
- LeetCode算法题-Convert a Number to Hexadecimal(Java实现)
这是悦乐书的第219次更新,第231篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第86题(顺位题号是405).给定一个整数,写一个算法将其转换为十六进制.对于负整数,使 ...
- jsp 或 php 等view之中使用javascript简单处理的使用技巧
前端人员在jsp,php等后台mvc之的coding之时,前端人员常常需要一些少量的数据处理,直接使用js的方法无疑是开销最小的.使用的方法 使用在标签之中嵌套script标签,使用document. ...
- centos7下安装docker(15.2跨主机网络-overlay)
为支持容器跨主机通信,Docker提供了overlay driver,使用户可以创建基于VxLAN的overlay网络.VxLAN可将二层数据封装到UDP进行传输,VxLAN提供与VLAN相同的以太网 ...