public ActionResult Bind() { var memberId = GetMemberId(); var count = wechatCoreDb.QueryMemberWechat() .Where(m => m.MemberId == memberId) .Count(); if (count > 0) { return(RedirectToAction("BindInfo")); } else { return(View()); } }
public async Task <APIResult <bool> > TryLoginAsync([FromBody] TryLoginArgsModel args) { if (string.IsNullOrEmpty(args.ClientId)) { throw new ArgumentNullException("clientId"); } var ip = GetIp(); var task = wechatCoreDb.QueryMemberWeChatLoginTask() .Where(m => m.ClientId == args.ClientId) .Where(m => m.AddIp == ip) .OrderByDescending(m => m.Id) .FirstOrDefault(); if (task == null) { throw new Exception("请先发起登陆请求"); } switch (task.Status) { case MemberWeChatLoginTaskStatus.扫二维码进行中: return(Success <bool>(false)); case MemberWeChatLoginTaskStatus.扫二维码完成: var member = wechatCoreDb.QueryMemberWechat() .Where(m => m.OpenId == task.OpenId) .Where(m => !m.IsDel) .FirstOrDefault(); if (member == null) { throw new Exception("请先绑定微信"); } task.Status = MemberWeChatLoginTaskStatus.登陆完成; wechatCoreDb.SaveChanges(); List <Claim> claims = new List <Claim>(); var username = "******" + member.MemberId; var member2 = memberDb.QueryMember() .Where(m => m.Id == member.MemberId) .Where(m => !m.IsDel) .Select(m => new { Id = m.Id, Email = m.Email, Password = m.Password, Truename = m.Truename }) .FirstOrDefault(); if (member == null) { throw new ArgumentException("账号不正确"); } claims.Add(new Claim(ClaimTypes.Name, username, ClaimValueTypes.String, null)); claims.Add(new Claim("Truename", member2.Truename, ClaimValueTypes.String)); var userIdentity = new ClaimsIdentity("Form"); userIdentity.AddClaims(claims); var principal = new ClaimsPrincipal(userIdentity); await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, principal); return(Success <bool>(true)); case MemberWeChatLoginTaskStatus.登陆完成: default: return(Error <bool>("登陆已经完成,任务失效")); } }