public override void OnActionExecuting(ActionExecutingContext context) { base.OnActionExecuting(context); Microsoft.Extensions.Primitives.StringValues token = context.HttpContext.Request.Headers["AccessToken"]; if (!string.IsNullOrWhiteSpace(token)) { //存在AccessToken值,进行验证 RedisCacheTicket authBase = new RedisCacheTicket(token); TicketEntity userTicket = authBase.CurrentUserTicket; if (userTicket != null && userTicket.MemberID > 0) { CurrentUserTicket = userTicket; return; } } //直接输出结果,不经过Controller ResponseResult result = new ResponseResult() { errno = 30, errmsg = "请重新登录", }; context.Result = new ContentResult() { Content = SerializerJson.SerializeObject(result), StatusCode = 200 }; }
/// <summary> /// 验证登录的情况 /// </summary> /// <param name="context"></param> /// <param name="type">0=检查登录,获取用户信息,不退出;1=检查登录,未登录直接退出</param> protected void CheckLogin(ActionExecutingContext context, int type) { CurrentUserTicket = new TicketEntity(); Microsoft.Extensions.Primitives.StringValues token = context.HttpContext.Request.Headers["AccessToken"]; if (!string.IsNullOrWhiteSpace(token)) { //存在AccessToken值,进行验证 RedisCacheTicket authBase = new RedisCacheTicket(token); TicketEntity userTicket = authBase.CurrentUserTicket; if (userTicket != null && userTicket.MemberID > 0) { CurrentUserTicket = userTicket; return; } } if (type == 1) { //以上检查未登录,直接退出 //直接输出结果,不经过Controller ResponseResult result = new ResponseResult() { errno = 30, errmsg = "请重新登录", }; context.Result = new ContentResult() { Content = result.SerializeObject(), StatusCode = 200 }; } }
public void OnAuthorization(AuthorizationFilterContext context) { Microsoft.Extensions.Primitives.StringValues token = context.HttpContext.Request.Headers["AccessToken"]; if (!string.IsNullOrWhiteSpace(token)) { //存在AccessToken值,进行验证 RedisCacheTicket authBase = new RedisCacheTicket(token); TicketEntity userTicket = authBase.CurrentUserTicket; if (userTicket != null && userTicket.ID.ToLong() > 0) { CurrentUserTicket = userTicket; return; } } //直接输出结果,不经过Controller ResponseResult result = new ResponseResult() { errno = 30, errmsg = "请重新登录", }; context.Result = new ContentResult() { Content = result.SerializeObject(), StatusCode = 200 }; }
public void Test1() { RedisManager redisManager = new RedisManager(0); RedisCacheTicket authBase = new RedisCacheTicket("1F5A707995391AD7DFE50709A54E264C"); TicketEntity userTicket = authBase.CurrentUserTicket; //var all = redisManager.GetAll(); //foreach (var item in all) //{ // Console.WriteLine($"集合缓存,key:{item.Key},value:{item.Value}"); //} #region List入队 //redisManager.ListRightPush("dylan", "sharecore我是入队的");//入队 //long len = redisManager.ListLength("dylan");//队列长度 //string b = redisManager.ListRightPop<string>("dylan");//出队 #endregion #region List入栈 //redisManager.ListLeftPush("dylan", "sharecore我是入栈的");//入栈 //long len = redisManager.ListLength("dylan");//队列长度 //string b = redisManager.ListLeftPop<string>("key123");//出栈 #endregion #region 发布订阅 //redisManager.Subscribe("dylan", (channel, value) => //{ // Console.WriteLine(channel.ToString() + ":" + value.ToString()); //}); //for (int i = 0; i < 50; i++) //{ // var data = new // { // name= "dylan", // code = "sharecore" // }; // redisManager.Publish("dylan", data); //}; #endregion #region 单值存储 //var flag = redisManager.StringSet("dylan", "公众号为:sharecore"); //var value = redisManager.StringGet("dylan"); //Console.WriteLine($"获取缓存值为:{value}"); #endregion //var Ip = Dns.GetHostEntry(Dns.GetHostName()).AddressList.FirstOrDefault<IPAddress>(a => a.AddressFamily.ToString().Equals("InterNetwork")).ToString(); }
/// <summary> /// 验证登录的情况 /// </summary> /// <param name="context"></param> /// <param name="type">0=检查登录,获取用户信息,不退出;1=检查登录,未登录直接退出</param> protected void CheckLogin(ActionExecutingContext context, int type) { var controllerName = context.RouteData.Values["Controller"].ToString(); var actionName = context.RouteData.Values["Action"].ToString(); CurrentUserTicket = new TicketEntity(); Microsoft.Extensions.Primitives.StringValues token = context.HttpContext.Request.Headers["AccessToken"]; if (!string.IsNullOrWhiteSpace(token)) { //存在AccessToken值,进行验证,以后升级方法 RedisCacheTicket authBase = new RedisCacheTicket(token); TicketEntity userTicket = authBase.CurrentUserTicket; if (userTicket != null && userTicket.ID.ToLong() > 0) { CurrentUserTicket = userTicket; return; } else { System.Console.WriteLine($"获取缓存身份信息:{userTicket.Msg},{controllerName}/{actionName}"); } } if (type == 1) { //以上检查未登录,直接退出 //直接输出结果,不经过Controller ResponseResult result = new ResponseResult() { errno = 30, errmsg = "身份过期,请重新登录", }; context.Result = new ContentResult() { Content = result.SerializeObject(), StatusCode = 200 }; } }