public ActionResult Login() { MemberLoginArgs args = RequestArgs <MemberLoginArgs>(); if (args == null) { return(FailedResult("参数无效。")); } args.password = IOHelper.GetMD5HashFromString(args.password); Member member = _memberManager.GetMemberByMobilePhoneAndPassword(args.mobilephone, args.password); if (member == null == false) { //TODO:初始化 memberDto MemberAppDto memberAppDto = Mapper.Map <Member, MemberAppDto>(member); memberAppDto.primaryDistributionCount = _memberManager.GetMemberDistributionCount(memberAppDto.id, null); memberAppDto.secondDistributionCount = _memberManager.GetMemberDistributionCount(null, Convert.ToInt32(memberAppDto.superiorAgentId)); MemberUserContext userContext = new MemberUserContext() { LoginTime = DateTime.Now, Token = Guid.NewGuid().ToString(), UserId = member.id, Member = memberAppDto }; NormalResult <MemberUserContext> result = new NormalResult <MemberUserContext>(); result.Data = userContext; _cachingService.Set(userContext.Token, userContext); //一般返回结果不需要自己new AppApiResult,看 return ApiResult 这个方法的几个重载 AppApiResult apiResult = new AppApiResult() { result = "success", message = "登录成功", token = result.Data.Token, data = memberAppDto }; return(ApiResult(apiResult)); } else { return(FailedResult("手机号或密码无效。")); } }
protected override void OnActionExecuting(ActionExecutingContext filterContext) { base.OnActionExecuting(filterContext); object[] objAllowedAnonymousArray = filterContext.ActionDescriptor.GetCustomAttributes(typeof(AllowedAnonymous), false); if (objAllowedAnonymousArray.Length > 0) { return; } //从请求中提取token string token = Request.Headers["token"]; if (String.IsNullOrEmpty(token)) { AppApiResult apiResult = new AppApiResult() { result = "error", message = "会话失效,请重新登录" }; filterContext.Result = ApiResult(apiResult); return; } UserContext = _cachingService.Get <MemberUserContext>(token); if (UserContext == null) { AppApiResult apiResult = new AppApiResult() { result = "error", message = "会话失效,请重新登录" }; filterContext.Result = ApiResult(apiResult); return; } }