예제 #1
0
        public async Task <IResponseEntity> CreateAsync(LoginLogAddRequest req)
        {
            var entity = _mapper.Map <SysLoginLogEntity>(req);

            var item = await _loginLogRepository.InsertAsync(entity);

            return(ResponseEntity.Result(item?.Id != ""));
        }
예제 #2
0
        public async Task <IResponseEntity> Login(AuthLoginRequest req)
        {
            var sw = new Stopwatch();

            sw.Start();
            var res = (await _authService.LoginAsync(req)) as IResponseEntity;

            sw.Stop();

            if (!res.Success)
            {
                return(res);
            }
            else
            {
                var user = (res as IResponseEntity <AuthLoginResponse>).Data;


                #region 写登录日志

                string ua                 = HttpContext.Request.Headers["User-Agent"];
                var    client             = UAParser.Parser.GetDefault().Parse(ua);
                var    device             = client.Device.Family;
                var    loginLogAddRequest = new LoginLogAddRequest()
                {
                    CreatedBy           = user.Id,
                    CreatedByName       = user.UserName,
                    RealName            = user.DisplayName,
                    ElapsedMilliseconds = sw.ElapsedMilliseconds,
                    Status  = res.Success,
                    Message = res.Message,

                    Browser     = client.UA.Family,
                    Os          = client.OS.Family,
                    Device      = device.ToLower() == "other" ? "" : device,
                    BrowserInfo = ua,
                    Ip          = IPHelper.GetIP(HttpContext?.Request)
                };

                await _loginLogService.CreateAsync(loginLogAddRequest);

                #endregion

                #region 构造JWT Token
                var claims = new Claim[] {
                    new Claim(ClaimAttributes.UserId, user.Id.ToString()),
                    new Claim(ClaimAttributes.UserName, user.UserName),
                    new Claim(ClaimAttributes.DisplayName, user.DisplayName),
                    new Claim(ClaimAttributes.PermissionId, user.PermissionId)
                };
                var token = _authToken.Build(claims);
                #endregion

                var data = new
                {
                    token,
                    uuid = user.Id,
                    info = new
                    {
                        id             = user.Id,
                        name           = user.UserName,
                        displayName    = user.DisplayName,
                        avatar         = user.Avatar,
                        menus          = user.Menus,
                        functionPoints = user.FunctionPoints
                    }
                };

                return(ResponseEntity.Ok(data));
            }
        }