Пример #1
0
        public Result <ServiceResponse> Login(LoginRequest request)
        {
            return(this.ExecuteMethod(() =>
            {
                request.CheckNotNull();

                if (string.IsNullOrEmpty(request.Username))
                {
                    throw new ArgumentNullException("username");
                }

                var username = request.Username;



                if (WebSecurityHelper.Authenticate(ref username, request.Password, false))
                {
                    //set session
                    //var test = Authorization.UserDefinition;
                    //var ud = Authorization.UserDefinition as UserDefinition;
                    //Session["DataKtp"] = ud.Ktp;
                    //Session["DataSlideshow"] = ud.SlideShow.ToList();

                    return new ServiceResponse();
                }

                throw new ValidationError("AuthenticationError", Texts.Validation.AuthenticationError);
            }));
        }
Пример #2
0
        public async Task <IActionResult> GenerateToken(LoginRequest request)
        {
            bool loggedIn = false;

            if (ModelState.IsValid)
            {
                request.CheckNotNull();

                if (string.IsNullOrEmpty(request.Username))
                {
                    throw new ArgumentNullException("username");
                }

                await Task.Run(() =>
                {
                    var username = request.Username;
                    if (WebSecurityHelper.Authenticate(ref username, request.Password, false))
                    {
                        loggedIn = true;
                    }
                });

                if (loggedIn)
                {
                    var claims = new[]
                    {
                        new Claim(JwtRegisteredClaimNames.NameId, request.Username),
                        new Claim(ClaimTypes.Name, request.Username),
                        new Claim(ClaimTypes.NameIdentifier, request.Username),
                        new Claim(JwtRegisteredClaimNames.UniqueName, request.Username),
                        new Claim(JwtRegisteredClaimNames.Sub, request.Username),
                        new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
                    };

                    //var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config["Tokens:Key"]));
                    var key   = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("kDDlhs8pVhNIqVUCxdAOX0D"));
                    var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);

                    var token = new JwtSecurityToken("https://localhost:44310", "https://localhost:44310",
                                                     claims,
                                                     expires: DateTime.Now.AddDays(365),
                                                     signingCredentials: creds);

                    return(Ok(new { token = new JwtSecurityTokenHandler().WriteToken(token) }));
                }
                else
                {
                    //var error = new ServiceError();
                    //error.Code = "400A";
                    //error.Message = "Admission already taken";

                    return(BadRequest(Texts.Validation.AuthenticationError));
                }
            }
            return(BadRequest("Could not create token"));
        }
Пример #3
0
        public HttpResponseMessage Post(LoginRequest request)
        {
            LoginResponse response = new LoginResponse();
            if (request == null)
            {
                response.IsSuccess = false;
                response.Result = "请求的数据不能为空";

                return BuildErrorResult(HttpStatusCode.BadRequest, response);
            }
            if (String.IsNullOrWhiteSpace(request.Username))
            {
                response.IsSuccess = false;
                response.Result = "用户名不能为空";
                return BuildErrorResult(HttpStatusCode.BadRequest, response);
            }


            var username = request.Username;


            if (Dependency.Resolve<IAuthenticationService>().Validate(ref username, request.Password))
            {
                CheckTwoFactorAuthentication(username, request);

                WebSecurityHelper.SetAuthenticationTicket(username, false);
                response.IsSuccess = true;
                response.Result = "登录成功";
                //var user = (UserDefinition) Authorization.UserDefinition;
                if (Dependency.Resolve<IUserRetrieveService>().ByUsername(username) is UserDefinition user)
                {
                    response.TenantId = user.TenantId;
                    string sql = $"select * from [dbo].[UserRoles] where UserId = {user.UserId}";
                    int roleId = 0;
                    using (var conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Default"].ConnectionString))
                    {
                        var userRole = conn.Query<UserRoleRow>(sql).FirstOrDefault();
                        if (userRole != null && userRole.RoleId != null) roleId = userRole.RoleId.Value;
                    }
                   
                    //var userRole = new UserRoleRepository().List(SqlConnections.NewFor<UserRoleRow>(), new Administration.UserRoleListRequest{UserID = user.UserId}).Entities.First();
                    if (username == "admin" || roleId == 1)
                    {
                        response.IsAdmin = true;
                    }
                }


                return BuildSuccessResult(HttpStatusCode.OK, response);
            }

            response.IsSuccess = false;
            response.Result = "用户名或密码不正确";
            return BuildErrorResult(HttpStatusCode.BadRequest, response);
        }
Пример #4
0
        public HttpResponseMessage LoginForApp(LoginRequest request)
        {
            HttpResponseMessage responseMessage = new HttpResponseMessage();
            LoginResponse       response        = new LoginResponse();
            var formatter = new JsonMediaTypeFormatter();

            formatter.SerializerSettings =
                new Newtonsoft.Json.JsonSerializerSettings
            {
                NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore
            };
            if (request == null)
            {
                response.IsSuccess         = false;
                response.Result            = "请求的数据不能为空";
                responseMessage.StatusCode = HttpStatusCode.BadRequest;

                responseMessage.Content = new ObjectContent <LoginResponse>(response, formatter);

                return(responseMessage);
            }
            if (String.IsNullOrWhiteSpace(request.Username))
            {
                responseMessage.StatusCode = HttpStatusCode.BadRequest;
                response.IsSuccess         = false;
                response.Result            = "用户名不能为空";
                responseMessage.Content    = new ObjectContent <LoginResponse>(response, formatter, "application/json");
                return(responseMessage);
            }


            var username = request.Username;

            if (Dependency.Resolve <IAuthenticationService>().Validate(ref username, request.Password))
            {
                CheckTwoFactorAuthentication(username, request);

                WebSecurityHelper.SetAuthenticationTicket(username, false);
                response.IsSuccess         = true;
                response.Result            = "登录成功";
                responseMessage.StatusCode = HttpStatusCode.OK;
                responseMessage.Content    = new ObjectContent <LoginResponse>(response, formatter);
                return(responseMessage);
            }

            response.IsSuccess         = false;
            response.Result            = "用户名或密码不正确";
            responseMessage.StatusCode = HttpStatusCode.BadRequest;
            responseMessage.Content    = new ObjectContent <LoginResponse>(response, formatter);
            return(responseMessage);
        }
Пример #5
0
        public Result <ServiceResponse> Login(LoginRequest request) => this.ExecuteMethod(() => {
            request.CheckNotNull();

            if (string.IsNullOrEmpty(request.Username))
            {
                throw new ArgumentNullException("username");
            }

            var username = request.Username;

            if (WebSecurityHelper.Authenticate(ref username, request.Password, false))
            {
                return(new ServiceResponse());
            }

            throw new ValidationError("AuthenticationError", Texts.Validation.AuthenticationError);
        });
Пример #6
0
        public Result <ServiceResponse> Login(LoginRequest request)
        {
            return(this.ExecuteMethod(() =>
            {
                request.CheckNotNull();

                if (request.Username == null)
                {
                    throw new ArgumentNullException("username");
                }

                var username = request.Username;

                if (WebSecurityHelper.Authenticate(ref username, request.Password, false))
                {
                    return new ServiceResponse();
                }

                throw new ValidationError("AuthenticationError", null, "Invalid username or password!");
            }));
        }
Пример #7
0
        public Result Check(LoginModel input)
        {
            Result result = Result.Create();

            if (!ModelState.IsValid)
            {
                throw new Exception(ModelState.Values.Where(x => x.Errors.Count > 0).Select(x => x.Errors).FirstOrDefault().Select(x => x.ErrorMessage).FirstOrDefault());
            }

            var validate = WebSecurityHelper.ValidateUser(input.username, input.password, input.remember, () =>
            {
                var user = _sysUserServices.GetUserByName(input.username);
                if (user == null)
                {
                    throw new Exception("账户不存在");
                }
                var systemUser = new Operator()
                {
                    Id              = user.Id,
                    UserName        = user.Name,
                    Password        = user.Password,
                    Name            = user.LoginName,
                    IsAdministrator = user.Isadmin == 1
                };
                switch (user.State)
                {
                case 1:
                    throw new Exception("账户被禁用");

                case -1:
                    throw new Exception("账户不存在");
                }
                return(systemUser);
            });

            return(validate);
        }
Пример #8
0
        public Result <ServiceResponse> Login(LoginRequest request)
        {
            return(this.ExecuteMethod(() =>
            {
                request.CheckNotNull();

                if (string.IsNullOrEmpty(request.Username))
                {
                    throw new ArgumentNullException("username");
                }

                var username = request.Username;

                if (Dependency.Resolve <IAuthenticationService>().Validate(ref username, request.Password))
                {
                    CheckTwoFactorAuthentication(username, request);

                    WebSecurityHelper.SetAuthenticationTicket(username, false);
                    return new ServiceResponse();
                }

                throw new ValidationError("AuthenticationError", Texts.Validation.AuthenticationError);
            }));
        }
Пример #9
0
 public ActionResult Signout()
 {
     WebSecurityHelper.LogOut();
     return(new RedirectResult("~/"));
 }
 public SecurityTest()
 {
     //_securityHelper = new SecurityHelper();
     _securityHelper = new WebSecurityHelper();
 }