Пример #1
0
        public Result Login([FromForm] int Userid, [FromForm] string Password)
        {
            try
            {
                var user = _repository.FindFirst(n => n.Id == Userid);
                if (user == null)
                {
                    return(Fail("登录失败,用户不存在!"));
                }
                if (user.Password != UserUtility.EncryptPassword(Password))
                {
                    return(Fail("登录失败,登录密码错误!"));
                }

                string        token   = UserUtility.GetTokenById(user.Id);
                CookieOptions options = new CookieOptions();
                options.Expires = DateTime.Now.AddDays(_config.TokenDays);
                Response.Cookies.Append("token", token, options);

                _cache.SetUser(user);

                return(Success(new { Id = user.Id, Name = user.Name, user.Super }));
            }
            catch (Exception ex)
            {
                _logger.LogError(ex.Message + ex.StackTrace);
                return(Fail("系统错误"));
            }
        }
Пример #2
0
        /// <summary>
        /// 获取用户对任务的管理权限
        /// </summary>
        /// <param name="userid"></param>
        /// <param name="taskid"></param>
        /// <returns></returns>
        public static bool GetAccess(int userid, int taskid, HandleAccess access)
        {
            bool flag = false;
            UserInfoRepository userinfo = new UserInfoRepository(new TaskSchedulerRepository.DbContexts.TaskSchedulerDbContext());
            UserInfo           user     = userinfo.FindFirst(n => n.Id == userid) ?? new UserInfo();

            if (user.Super)
            {
                return(user.Super);
            }
            TaskManageRepository task   = new TaskManageRepository(new TaskSchedulerRepository.DbContexts.TaskSchedulerDbContext());
            TaskManage           manage = task.FindFirst(n => n.UserId == userid && n.TaskId == taskid) ?? new TaskManage();

            if ((access == HandleAccess.AddTask) && (manage.Access & HandleAccess.AddTask) == HandleAccess.AddTask)
            {
                flag = true;
            }
            if ((access == HandleAccess.UpdateTask) && (manage.Access & HandleAccess.UpdateTask) == HandleAccess.UpdateTask)
            {
                flag = true;
            }
            if ((access == HandleAccess.DeleteTask) && (manage.Access & HandleAccess.DeleteTask) == HandleAccess.DeleteTask)
            {
                flag = true;
            }
            if ((access == HandleAccess.RunTask) && (manage.Access & HandleAccess.RunTask) == HandleAccess.RunTask)
            {
                flag = true;
            }
            if ((access == HandleAccess.HandleCommand) && (manage.Access & HandleAccess.HandleCommand) == HandleAccess.HandleCommand)
            {
                flag = true;
            }
            if ((access == HandleAccess.HandleConfig) && (manage.Access & HandleAccess.HandleConfig) == HandleAccess.HandleConfig)
            {
                flag = true;
            }
            if ((access == HandleAccess.SelectTask) && (manage.Access & HandleAccess.SelectTask) == HandleAccess.SelectTask)
            {
                flag = true;
            }
            return(flag);
        }
Пример #3
0
        public static IApplicationBuilder UserIdentity(this IApplicationBuilder builder)
        {
            return(builder.Use(async(httpContext, next) =>
            {
                int userid; DateTime time;

                string token = httpContext.Request.Cookies["token"] ?? "";
                try
                {
                    if (UserUtility.GetIdByToken(token, out userid, out time))
                    {
                        UserInfo user = null;
                        IMemoryCache cache = httpContext.RequestServices.GetService(typeof(IMemoryCache)) as IMemoryCache;

                        user = cache.GetUser(userid);
                        if (user == null)
                        {
                            UserInfoRepository repository = httpContext.RequestServices.GetService(typeof(UserInfoRepository)) as UserInfoRepository;
                            if (repository != null)
                            {
                                user = repository.FindFirst(n => n.Id == userid);
                                cache.SetUser(user);
                            }
                        }
                        if (user != null)
                        {
                            httpContext.Items.Add("user", user);
                        }
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message + ex.StackTrace);
                }

                await next.Invoke();
            }));
        }