/// <summary> /// 获取产品列表 /// </summary> /// <param name="po"></param> /// <returns></returns> public ResponseResultBase GetList(ProductListPO po) { var response = new ResponseResultBase(); #region 参数拼接 Expression <Func <Product, bool> > filter = null; if (!string.IsNullOrEmpty(po.Name)) { filter = filter.And(x => x.Name.Contains(po.Name)); } if (po.Status != ProductStatus.All) { filter = filter.And(x => x.Status == po.Status); } Expression <Func <Product, object> > orderBy = x => x.Sequence; #endregion var productList = _productRepository.GetPageList(out int totalCount, po.Page, po.Limit, filter, orderBy, false); var productStatusEnumList = EnumHelper.EnumToList <ProductStatus>(); var rows = productList.Select(x => new ProductListDTO { Id = x.Id, Name = x.Name, Description = x.Description, Status = productStatusEnumList.Where(t => t.EnumValue == (int)x.Status).FirstOrDefault().Discription, Sequence = x.Sequence, CreatedDate = x.CreatedDate.ToString("yy/MM/dd hh:mm:ss"), UpdatedDate = x.UpdatedDate.ToString("yy/MM/dd hh:mm:ss") }).ToList(); var data = new ElementUIPagedList <ProductListDTO>(); data.Total = totalCount; data.Items = rows; response.Data = data; return(response); }
public ResponseResultBase PostAsync(HttpContent httpContent, string url) { var result = new ResponseResultBase(); HttpClient client = _httpClientFactory.CreateClient(); try { var response = client.PostAsync(url, httpContent).Result; if (response.IsSuccessStatusCode) { var data = response.Content.ReadAsStringAsync().Result; result.Data = data; } else { string message = "地址:" + url + "请求失败,原因:" + response.Content.ToString(); result.SetFailed(message, ErrorCode.InternalServerError); } } catch (Exception e) { string message = "接口异常:地址:" + url + "请求失败,原因:" + e.Message; result.SetFailed(message, ErrorCode.InternalServerError); } return(result); }
/// <summary> /// 注册JWT Bearer认证服务的静态扩展方法 /// </summary> /// <param name="services"></param> /// <param name="appSettings">JWT授权的配置项</param> public static void AddJwtBearerAuthentication(this IServiceCollection services, JWTSetting jwtSetting) { //使用应用密钥得到一个加密密钥字节数组 var key = Encoding.ASCII.GetBytes(jwtSetting.Secret); services.AddAuthentication(x => { x.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; x.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; }) .AddCookie(cfg => cfg.SlidingExpiration = true) .AddJwtBearer(x => { x.RequireHttpsMetadata = true; x.SaveToken = true; x.TokenValidationParameters = new TokenValidationParameters { ValidateIssuerSigningKey = true, IssuerSigningKey = new SymmetricSecurityKey(key), ValidateIssuer = false, ValidateAudience = false }; x.Events = new JwtBearerEvents { //此处为权限验证失败后触发的事件 OnChallenge = context => { //此处代码为终止.Net Core默认的返回类型和数据结果,这个很重要哦,必须 context.HandleResponse(); //自定义自己想要返回的数据结果,我这里要返回的是Json对象,通过引用Newtonsoft.Json库进行转换 var result = new ResponseResultBase(); result.SetFailed("很抱歉,您无权访问该接口", ErrorCode.NoPermission); var serializerSettings = new JsonSerializerSettings { // 设置为驼峰命名 ContractResolver = new CamelCasePropertyNamesContractResolver() }; var payload = JsonConvert.SerializeObject(result, serializerSettings); //自定义返回的数据类型 context.Response.ContentType = "application/json"; //自定义返回状态码,默认为401 我这里改成 200 context.Response.StatusCode = StatusCodes.Status200OK; //输出Json数据结果 context.Response.WriteAsync(payload); return(Task.FromResult(0)); } }; }); }
/// <summary> /// 获取当前登陆用户信息 /// </summary> /// <param name="qc"></param> /// <returns></returns> public ResponseResultBase GetUserInfo() { var response = new ResponseResultBase(); var user = _workContext.CurrentUser; if (user != null) { response.Data = user; } else { response.SetFailed("用户未登录或登陆超时,请重新登陆", ErrorCode.NoPermission); } return(response); }
public void OnException(ExceptionContext context) { var result = new ResponseResultBase(); //这里面是自定义的操作记录日志 string message = context.Exception.Message; if (_env.IsDevelopment()) { message = context.Exception.Message + context.Exception.StackTrace;//堆栈信息 } result.SetFailed(message, ErrorCode.InternalServerError); context.Result = new BadRequestObjectResult(result);//返回异常数据 //采用log4net 进行错误日志记录 _logger.LogError(context.Exception, result.Message); }
/// <summary> /// 用户登陆,返回用户信息 /// </summary> /// <param name="qc"></param> /// <returns></returns> public ResponseResultBase GetToken(TokenGetPO qc) { var response = new ResponseResultBase(); var user = _userRepository.Find(x => x.Account == qc.Account && x.Password == qc.Password); if (user == null) { response.SetFailed("用户不存在", ErrorCode.Failed); return(response); } else if (user.IsDisabled) { response.SetFailed("账号已被禁用", ErrorCode.Failed); return(response); } var menuList = new List <string>(); var roleList = user.UserRoleList.Select(x => x.Role).ToList(); if (roleList != null && roleList.Count > 0) { menuList = roleList.SelectMany(x => x.RoleMenuList.Select(t => t.Menu.Url)).ToList(); } var claimsIdentity = new ClaimsIdentity(new Claim[] { new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()), new Claim("account", user.Account), new Claim(ClaimTypes.Name, user.Name), new Claim("isAdmin", user.IsAdmin.ToString()), new Claim("avatar", user.Avatar), new Claim("menus", JsonConvert.SerializeObject(menuList)) }); var token = this.GenerateToken(claimsIdentity); response.Data = token; return(response); }