Beispiel #1
0
        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
            };
        }
Beispiel #2
0
        /// <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
                };
            }
        }
Beispiel #3
0
        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
            };
        }
Beispiel #4
0
        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();
        }
Beispiel #5
0
        /// <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
                };
            }
        }