微信一键登录

        /// <summary>
        /// 小程序秘钥
        /// </summary>
        /// <param name="wxLogin"></param>
        /// <returns></returns>
        [AllowUser]
        [HttpPost]
        public ResultResponse<bool> GetWxSessionKey([FromBody] WxLogin wxLogin)
        {
            ResultResponse<bool> ret = new ResultResponse<bool>();
            if (string.IsNullOrWhiteSpace(wxLogin.sessionKey))
            {
                ret.Flag = false;
                ret.Result = false;
                ret.ErrorMsg = "登录失败";
                return ret;
            }
            var session = WxHelper.Code2Session(wxLogin.sessionKey);
            Session["wx_mini_session_key"] = session.session_key;
            ret.Result = true;
            ret.Flag = true;
            return ret;
        } 
       
        //登录、注册(一键授权)-UnionId 
        [AllowUser]
        [HttpPost]
        public ResultResponse<int> WxLoginUnionId([FromBody] WxLogin wxLogin)
        {
            ResultResponse<int> ret = new ResultResponse<int>();
            SysUser user = null;
            wxLogin.sessionKey = Session["wx_mini_session_key"] as string;
            if (string.IsNullOrWhiteSpace(wxLogin.sessionKey)
               || string.IsNullOrWhiteSpace(wxLogin.iv)
               || string.IsNullOrWhiteSpace(wxLogin.encryptedData))
            {
                ret.Flag = false;
                ret.ErrorMsg = "登录失败";
                return ret;
            }
            var unionId = WxHelper.GetUnionIdYjsq(wxLogin.sessionKey, wxLogin.iv, wxLogin.encryptedData);

            var userInfo = WxHelper.wxUserInfo(wxLogin.sessionKey, wxLogin.iv, wxLogin.encryptedData);

            var session = WxHelper.GetAccessToken(wxLogin.sessionKey);

            if (session == null || string.IsNullOrWhiteSpace(unionId))
            {
                ret.Result = 0;
                ret.Flag = false;
                ret.ErrorMsg = "登录失败";
                return ret;
            }
            user = UserBll.GetUserByWxUnionId(unionId, 0);

            if (user != null)
            {
                user.IsPerfectInfo = true;

                LoginUser = new Account()
                {
                    id = user.Id,
                    name = user.Name,
                    userName = user.Name
                };
                user.AvatarUrl = user.AvatarUrl == null ? null : ConfigurationManager.AppSettings["WebSiteUrl"] + user.AvatarUrl;
                ret.Flag = true;
                ret.ErrorMsg = "OK";
                ret.Result = user.Id;
                return ret;
            }
            else
            {
                SysUser user1 = new SysUser();
                //注册 
                user1.Name = Convert.ToString(userInfo["nickName"]);

                var fileName = "_" + DateTime.Now.ToString("yyyyMMddHHssmmfff");
                var path = "/File/HeadImage/";
                var imgPath = FileHelper.SaveImageFromWeb(Convert.ToString(userInfo["avatarUrl"]), HttpContext.Current.Server.MapPath(path), fileName);

                user1.AvatarUrl = path + imgPath;
                user1.Password = SecurityHelper.Md5("111111Y");
                user1.Phone = "1";
                user1.IsPerfectInfo = false;
                user1.WxUnionId = unionId;
                var result = UserBll.Register(user1);

                if (!result)
                {
                    ret.Result = 0;
                    ret.Flag = false;
                    return ret;
                }
                else
                {

                    user = UserBll.GetUserByWxUnionId(unionId, 0);
                    LoginUser = new Account()
                    {
                        id = user.Id,
                        name = user.Name,
                        pic = user.AvatarUrl,
                        userName = user.Name
                    };

                    OperateLogBll.AddOperateLog(new ComOperateLog()
                    {
                        MethodName = "Login",
                        Logtype = "WxLoginUnionId",
                        Username = LoginUser.name,
                        BussinessName = "UserProgramController",
                        Content = "用户" + LoginUser.id + "登录",
                        ColumnName = "",
                        TableName = "",
                        AddDate = DateTime.Now
                    });
                }
            }

            ret.Result = user.Id;
            ret.Flag = true;
            ret.ErrorMsg = "OK";
            return ret;
        }

 

上一篇:go语言结构体


下一篇:MySQL 常用命令(1)---连接、添加用户与授权