Example #1
0
        public async Task <IActionResult> GetJwtStr(string name, string pass)
        {
            // 将用户id和角色名,作为单独的自定义变量封装进 token 字符串中。
            TokenModelJwt tokenModel = new TokenModelJwt {
                Uid = 1, Role = "Admin"
            };
            var jwtStr = JWTHelper.IssueJwt(tokenModel);//登录,获取到一定规则的 Token 令牌
            var suc    = true;

            return(Ok(new
            {
                success = suc,
                token = jwtStr
            }));
        }
Example #2
0
        public async Task <IActionResult> GetJwtStr(string name, string pass)
        {
            //这里就是用户登陆以后,通过数据库去调取数据,分配权限的操作
            var user = await _sysUserInfoServices.GetUserRoleNameStr(name, MD5Helper.MD5Encrypt32(pass));

            if (user != null)
            {
                TokenModelJwt tokenModel = new TokenModelJwt {
                    Uid = 1, Role = user
                };

                return(Ok(JwtHelper.IssueJwt(tokenModel)));
            }
            return(BadRequest("login fail"));
        }
        public void Getjsonp(string callBack, long id = 1, string sub = "Admin", int expiresSliding = 30, int expiresAbsoulute = 30)
        {
            TokenModelJwt tokenModel = new TokenModelJwt
            {
                Uid  = id,
                Role = sub
            };

            string jwtStr = JwtHelper.IssueJwt(tokenModel);

            string response = string.Format("\"value\":\"{0}\"", jwtStr);
            string call     = callBack + "({" + response + "})";

            Response.WriteAsync(call);
        }
Example #4
0
        public async Task <IActionResult> Login([FromBody] LoginViewModel loginViewModel)
        {
            if (!ModelState.IsValid)
            {
                return(Ok(new
                {
                    code = codes.NameOrPwdError,
                    message = "登录失败,请检查用户名或密码"
                }));
            }
            var user = await _userManager.FindByNameAsync(loginViewModel.UserName);

            if (user != null)
            {
                var result = await _signInManager.PasswordSignInAsync(user, loginViewModel.Password, false, true);

                if (result.Succeeded)
                {
                    //Token的制作与发放
                    var           roleName    = (await _userManager.GetRolesAsync(user));
                    IList <Claim> ClaimResult = await _roleManager.GetClaimsAsync(await _roleManager.FindByNameAsync(roleName.Count == 0 ? "Staff" : roleName[0]));

                    TokenModelJwt tokenModel = new TokenModelJwt();
                    tokenModel.ID     = user.Id;
                    tokenModel.Claims = ClaimResult;
                    var token = JwtHelper.IssueJwt(tokenModel);
                    return(Ok(new
                    {
                        code = codes.Success,
                        data = token,
                        message = $"登录成功,欢迎\"{user.UserName}\""
                    }));
                }
                if (result.IsLockedOut)
                {
                    return(Ok(new
                    {
                        code = codes.IsLocked,
                        message = $"账户已被临时锁定,请稍后再试{await _signInManager.UserManager.GetLockoutEndDateAsync(user)}"
                    }));
                }
            }
            return(Ok(new
            {
                code = codes.NameOrPwdError,
                message = "登录失败,请检查用户名或密码"
            }));
        }
Example #5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="tokenModel"></param>
        /// <returns></returns>
        public static string IssueJwt(TokenModelJwt tokenModel)
        {
            string iss    = Appsettings.app(new string[] { "Audience", "Issuer" });
            string aud    = Appsettings.app(new string[] { "Audience", "Audience" });
            string secret = Appsettings.app(new string[] { "Audience", "Secret" });

            //var claims = new Claim[] //old
            var claims = new List <Claim>
            {
                /*
                 * 特别重要:
                 * 1、这里将用户的部分信息,比如 uid 存到了Claim 中,如果你想知道如何在其他地方将这个 uid从 Token 中取出来,请看下边的SerializeJwt() 方法,或者在整个解决方案,搜索这个方法,看哪里使用了!
                 * 2、你也可以研究下 HttpContext.User.Claims ,具体的你可以看看 Policys/PermissionHandler.cs 类中是如何使用的。
                 */



                new Claim(JwtRegisteredClaimNames.Jti, tokenModel.Uid.ToString()),
                new Claim(JwtRegisteredClaimNames.Iat, $"{new DateTimeOffset(DateTime.Now).ToUnixTimeSeconds()}"),
                new Claim(JwtRegisteredClaimNames.Nbf, $"{new DateTimeOffset(DateTime.Now).ToUnixTimeSeconds()}"),
                //这个就是过期时间,目前是过期1000秒,可自定义,注意JWT有自己的缓冲过期时间
                new Claim(JwtRegisteredClaimNames.Exp, $"{new DateTimeOffset(DateTime.Now.AddSeconds(1000)).ToUnixTimeSeconds()}"),
                new Claim(JwtRegisteredClaimNames.Iss, iss),
                new Claim(JwtRegisteredClaimNames.Aud, aud),

                //new Claim(ClaimTypes.Role,tokenModel.Role),//为了解决一个用户多个角色(比如:Admin,System),用下边的方法
            };

            // 可以将一个用户的多个角色全部赋予;
            // 作者:DX 提供技术支持;
            claims.AddRange(tokenModel.Role.Split(',').Select(s => new Claim(ClaimTypes.Role, s)));



            //秘钥 (SymmetricSecurityKey 对安全性的要求,密钥的长度太短会报出异常)
            var key   = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(secret));
            var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);

            var jwt = new JwtSecurityToken(
                issuer: iss,
                claims: claims,
                signingCredentials: creds);

            var jwtHandler = new JwtSecurityTokenHandler();
            var encodedJwt = jwtHandler.WriteToken(jwt);

            return(encodedJwt);
        }
Example #6
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="httpContext"></param>
        /// <returns></returns>
        public Task Invoke(HttpContext httpContext)
        {
            PreProceed(httpContext);


            //检测是否包含'Authorization'请求头
            if (!httpContext.Request.Headers.ContainsKey("Authorization"))
            {
                PostProceed(httpContext);

                return(_next(httpContext));
            }
            //var tokenHeader = httpContext.Request.Headers["Authorization"].ToString();
            var tokenHeader = httpContext.Request.Headers["Authorization"].ToString().Replace("Bearer ", "");

            Console.WriteLine($"{DateTime.Now} token :{tokenHeader}");

            try
            {
                if (tokenHeader.Length >= 128)
                {
                    //Console.WriteLine($"{DateTime.Now} token :{tokenHeader}");
                    TokenModelJwt tm = UserHelper.SerializeJwt(tokenHeader);
                    //httpContext.User = "******";

                    //授权
                    var claimList = new List <Claim>();
                    var claim     = new Claim(ClaimTypes.Role, tm.Role);
                    claimList.Add(claim);
                    var identity  = new ClaimsIdentity(claimList);
                    var principal = new ClaimsPrincipal(identity);
                    httpContext.User = principal;

                    Console.WriteLine($"{DateTime.Now} principal :{principal}");
                }
            }
            catch (Exception e)
            {
                // TODO .........................................
                Console.WriteLine($"{DateTime.Now} middleware wrong:{e.Message}");
            }


            PostProceed(httpContext);


            return(_next(httpContext));
        }
        public async Task <object> GetJsonWebToken(LoginUserDto dto)
        {
            try
            {
                // 将用户名称推送到声明中,以便我们稍后识别用户。
                string jwtStr = string.Empty;
                bool   suc    = false;
                //这里就是用户登陆以后,通过数据库去调取数据,分配权限的操作
                //这里直接写死了


                if (string.IsNullOrEmpty(dto.UserName) || string.IsNullOrEmpty(dto.Password))
                {
                    return(new JsonResult(new
                    {
                        code = "201",
                        status = false,
                        message = "用户名或密码不能为空",
                        token = ""
                    }));
                }

                TokenModelJwt tokenModel = new TokenModelJwt();
                tokenModel.Uid  = 1;
                tokenModel.Role = "Admin";

                jwtStr = JwtHelper.IssueJwt(tokenModel);


                return(Ok(new
                {
                    code = "200",
                    status = true,
                    message = "生成成功",
                    token = jwtStr
                }));
            }
            catch (Exception e)
            {
                return(Ok(new
                {
                    code = "202",
                    status = false,
                    message = e.Message,
                    token = ""
                }));
            }
        }
Example #8
0
        /// <summary>
        /// 颁发JWT字符串
        /// </summary>
        /// <param name="tokenModel"></param>
        /// <returns></returns>
        public static string IssueJwt(TokenModelJwt tokenModel)
        {
            string iss    = Startup.Configuration["Audience:Issuer"];
            string aud    = Startup.Configuration["Audience:Audience"];
            string secret = Startup.Configuration["Audience:Secret"];


            //string iss = "BaseFramwork";
            //string aud = "BaseFramwork";
            //string secret = "This is JWT Secret Key";

            //var claims = new Claim[] //old
            var claims = new List <Claim>
            {
                //下边为Claim的默认配置
                new Claim(JwtRegisteredClaimNames.Jti, tokenModel.Uid.ToString()),
                new Claim(JwtRegisteredClaimNames.Iat, $"{new DateTimeOffset(DateTime.Now).ToUnixTimeSeconds()}"),
                new Claim(JwtRegisteredClaimNames.Nbf, $"{new DateTimeOffset(DateTime.Now).ToUnixTimeSeconds()}"),
                //这个就是过期时间,目前是过期100秒,可自定义,注意JWT有自己的缓冲过期时间
                new Claim(JwtRegisteredClaimNames.Exp, $"{new DateTimeOffset(DateTime.Now.AddSeconds(100000)).ToUnixTimeSeconds()}"),
                new Claim(JwtRegisteredClaimNames.Iss, iss),
                new Claim(JwtRegisteredClaimNames.Aud, aud),
                new Claim("Role", tokenModel.Role),

                //new Claim(ClaimTypes.Role,tokenModel.Role),//为了解决一个用户多个角色(比如:Admin,System),用下边的方法
            };

            // 可以将一个用户的多个角色全部赋予;
            // 作者:DX 提供技术支持;
            claims.AddRange(tokenModel.Role.Split(',').Select(s => new Claim(ClaimTypes.Role, s)));



            //秘钥 (SymmetricSecurityKey 对安全性的要求,密钥的长度太短会报出异常)
            var key   = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(secret));
            var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);

            var jwt = new JwtSecurityToken(
                issuer: iss,
                claims: claims,
                expires: DateTime.Now.AddSeconds(60),
                signingCredentials: creds);

            var jwtHandler = new JwtSecurityTokenHandler();
            var encodedJwt = jwtHandler.WriteToken(jwt);

            return(encodedJwt);
        }
Example #9
0
        /// <summary>
        /// 获取token码
        /// </summary>
        /// <param name="name"></param>
        /// <param name="pass"></param>
        /// <returns></returns>
        public async Task <object> GetJwtStr(string name, string pass)
        {
            // 将用户id和角色名,作为单独的自定义变量封装进 token 字符串中。
            TokenModelJwt tokenModel = new TokenModelJwt()
            {
                Uid = 1, Role = "Admin"
            };
            var jwtStr = JwtHelper.IssueJwt(tokenModel);

            var suc = true;

            return(Ok(new {
                success = suc,
                token = jwtStr
            }));
        }
Example #10
0
        //[Route("jsonp")]
        public void Getjsonp(string callBack, long id = 1, string sub = "Admin", int expiresSliding = 30, int expiresAbsoulute = 30)
        {
            TokenModelJwt tokenModel = new TokenModelJwt();

            tokenModel.Uid  = id;
            tokenModel.Role = sub;
            DateTime d1        = DateTime.Now;
            DateTime d2        = d1.AddMinutes(expiresSliding);
            DateTime d3        = d1.AddDays(expiresAbsoulute);
            TimeSpan sliding   = d2 - d1;
            TimeSpan absoulute = d3 - d1;
            var      jwtStr    = JwtHelper.IssueJwt(tokenModel);
            string   response  = string.Format("\"value\":\"{0}\"", jwtStr);
            string   call      = callBack + "({" + response + "})";

            Response.WriteAsync(call);
        }
Example #11
0
        public async Task <IActionResult> Login(LoginInput input)
        {
            if (string.IsNullOrWhiteSpace(input.UserName))
            {
                throw new UserOperationException("请输入用户名!");
            }
            if (string.IsNullOrWhiteSpace(input.Password))
            {
                throw new UserOperationException("请输入密码!");
            }
            var user = (await _userServices.Query(u => u.UserName == input.UserName && u.Password == MD5Helper.MD5Encrypt32(input.Password))).SingleOrDefault();

            if (user == null)
            {
                throw new UserOperationException("用户不存在或密码错误!");
            }
            if (user.Status == 0)
            {
                throw new UserOperationException("您的账号已被禁用!");
            }
            var tokenModel = new TokenModelJwt {
                UserId = user.Id
            };
            var userRoles = await _userRoleServices.Query(ur => ur.UserId == user.Id);

            if (userRoles.Any())
            {
                var roleIds = userRoles.Select(ur => ur.RoleId).ToList();
                var roles   = await _roleServices.Query(r => roleIds.Contains(r.Id));

                tokenModel.Roles = roles.Select(r => r.Name).ToList();
            }

            var userPermissions = await _permissionServices.GetUserPermissions(user.Id);

            _requirement.Permissions = userPermissions.Select(p => new Permission
            {
                Role = p.RoleName,
                Url  = p.LinkUrl
            }).ToList();

            var token = _jwtHelper.BuildJwtToken(tokenModel);

            return(Ok(token));
        }
Example #12
0
        public ResponseDto GetToken(string name, string password)
        {
            if (string.IsNullOrEmpty(name) || string.IsNullOrEmpty(password))
            {
                return new ResponseDto
                       {
                           Code    = 0,
                           Message = "用户名或者密码不能为空!"
                       }
            }
            ;

            using (MD5 md5Hash = MD5.Create())
            {
                password = GetMd5Hash(md5Hash, password);
            }
            var response = _userAppService.GetUserByNamePwd(name, password);

            if (response.Code != 200)
            {
                return new ResponseDto
                       {
                           Code    = 500,
                           Message = "找不到用户信息!"
                       }
            }
            ;

            string jwtStr = string.Empty;
            bool   suc    = false;

            TokenModelJwt tokenModel = new TokenModelJwt();

            tokenModel.Uid  = response.Data.Id;
            tokenModel.Role = response.Data.Name;

            jwtStr = JwtHelper.IssueJwt(tokenModel);
            suc    = true;
            return(new ResponseDto
            {
                Code = 200,
                Data = jwtStr
            });
        }
Example #13
0
        public async Task <IActionResult> Login([FromBody] T_WebUser userInfo)
        {
            try
            {
                bool   flag   = false;
                string jwtStr = string.Empty;
                if (!string.IsNullOrEmpty(userInfo.UserMail) || !string.IsNullOrEmpty(userInfo.UserPwd))
                {
                    //userInfo.uPassWord = CryptographyHelper.DESEncrypt(userInfo.uPassWord, encryptionKey, encryptionIv);//加密
                    var userinfo = await webUserService.Query(u => u.UserMail == userInfo.UserMail && u.UserPwd == userInfo.UserPwd);

                    //if (userinfo.Count > 0)
                    //{
                    //    HttpContext.Session.SetString("UserName", userInfo.uUserName);
                    //    flag = 1;
                    //}

                    TokenModelJwt tokenModel = new TokenModelJwt {
                        Uid = 1, Role = userInfo.UserMail
                    };
                    jwtStr = JwtHelper.IssueJwt(tokenModel);//登录,获取到一定规则的 Token 令牌
                    flag   = true;
                }
                else
                {
                    jwtStr = "login fail!!!";
                }
                return(Ok(new
                {
                    success = flag,

                    token = jwtStr
                }));
            }
            catch (Exception ex)
            {
                // loggerHelper.Error("UserInfoesController.Login", "异常位置:UserInfoesController.Login" + "异常消息:" + ex.Message);
                return(Ok(new
                {
                    success = false,
                    message = ex.Message
                }));
            }
        }
Example #14
0
        /// <summary>
        /// 颁发JWT字符串
        /// </summary>
        /// <param name="tokenModel"></param>
        /// <returns></returns>
        public static string IssueJWT(TokenModelJwt tokenModel)
        {
            var dateTime = DateTime.UtcNow;

            //var claims = new Claim[]
            //{
            //    new Claim(JwtRegisteredClaimNames.Jti,tokenModel.Uid.ToString()),//Id
            //    new Claim("Role", tokenModel.Role),//角色
            //    new Claim(JwtRegisteredClaimNames.Iat,$"{new DateTimeOffset(DateTime.Now).ToUnixTimeSeconds()}"),
            new Claim(JwtRegisteredClaimNames.Exp,
                      $"{new DateTimeOffset(DateTime.Now.AddSeconds(10)).ToUnixTimeSeconds()}");
            //};

            var claims = new Claim[]
            {
                //下边为Claim的默认配置
                new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
                new Claim(JwtRegisteredClaimNames.Iat, $"{new DateTimeOffset(DateTime.Now).ToUnixTimeSeconds()}"),
                new Claim(JwtRegisteredClaimNames.Nbf, $"{new DateTimeOffset(DateTime.Now).ToUnixTimeSeconds()}"),
                //这个就是过期时间,目前是过期100秒,可自定义,注意JWT有自己的缓冲过期时间
                new Claim(JwtRegisteredClaimNames.Exp, $"{new DateTimeOffset(DateTime.Now.AddSeconds(overdueTime)).ToUnixTimeSeconds()}"),
                new Claim(JwtRegisteredClaimNames.Iss, "Base.Core"),
                new Claim(JwtRegisteredClaimNames.Aud, "wr"),
                //这个Role是官方UseAuthentication要要验证的Role,我们就不用手动设置Role这个属性了
                new Claim(ClaimTypes.Role, tokenModel.Role),
            };


            //秘钥
            var key   = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(JwtHelper.secretKey));
            var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);

            var jwt = new JwtSecurityToken(
                issuer: "Base.Core",
                claims: claims,
                signingCredentials: creds);

            var jwtHandler = new JwtSecurityTokenHandler();
            var encodedJwt = jwtHandler.WriteToken(jwt);

            return(encodedJwt);
        }
Example #15
0
        public ActionResult GetJWTToken(UserSearchViewModel userSearchViewModel)
        {
            string jwtStr = string.Empty;
            bool   suc    = false;
            //这里就是用户登陆以后,通过数据库去调取数据,分配权限的操作
            //这里直接写死了
            //if (string.IsNullOrEmpty(name) || string.IsNullOrEmpty(pass))
            //{
            //    return new JsonResult(new
            //    {
            //        Status = false,
            //        message = "用户名或密码不能为空"
            //    });
            //}

            var SearchResult = _userService.User_Search(userSearchViewModel);
            var Actionresult = _userFactory.GetUserSearchResViewModel();

            if (SearchResult == 1)
            {
                Actionresult.baseViewModel.IsSuccess = true;
                Actionresult.Data = SearchResult;
                Actionresult.baseViewModel.Message      = "查询信息成功";
                Actionresult.baseViewModel.ResponseCode = 200;
                _ILogger.Information("查询信息成功");
                TokenModelJwt tokenModel = new TokenModelJwt();
                tokenModel.Uid     = 2;
                tokenModel.Role    = "Admin";
                jwtStr             = JwtHelper.IssueJwt(tokenModel);
                Actionresult.token = jwtStr;
                return(Ok(Actionresult));
            }
            else
            {
                Actionresult.baseViewModel.IsSuccess = false;
                Actionresult.Data = SearchResult;
                Actionresult.baseViewModel.Message      = "查询信息失败";
                Actionresult.baseViewModel.ResponseCode = 200;
                _ILogger.Information("查询信息失败");
                return(Ok(Actionresult));
            }
        }
        public void Get(string callback)
        {
            TokenModelJwt tokenModelJwt = new TokenModelJwt()
            {
                Role = "jsonp",
                Uid  = 1,
                Work = "dsdf"
            };
            var rng  = new Random();
            var date = Enumerable.Range(1, 5).Select(index => new WeatherForecast
            {
                Date         = DateTime.Now.AddDays(index),
                TemperatureC = rng.Next(-20, 55),
                Summary      = Summaries[rng.Next(Summaries.Length)]
            });
            var    modlestr = JsonConvert.SerializeObject(date);
            string call     = callback + "(" + modlestr + ")";

            Response.WriteAsync(call);
        }
Example #17
0
        public async Task <IActionResult> Login(LoginViewModel model)
        {
            //判断账号密码是否正确
            var userId = await _userService.Login(model);

            if (userId == Guid.Empty)
            {
                return(Ok("账号或密码错误!"));
            }

            //登录成功进行jwt加密
            var user = await _userService.GetOneByIdAsync(userId);

            TokenModelJwt tokenModel = new TokenModelJwt {
                UserId = user.Id, Level = user.Level.ToString()
            };
            var jwtStr = JwtHelper.JwtEncrypt(tokenModel);

            return(Ok(jwtStr));
        }
Example #18
0
        public async Task <object> GetJwtStr(string name, string pass)
        {
            var userinfo = await _userInfoServices.Query(u => u.USER_LOGIN_NAME == name && u.USER_PASSWORD == pass);

            if (userinfo.Count == 1)
            {
                string jwtStr = string.Empty;
                bool   suc    = false;

                // 获取用户的角色名,请暂时忽略其内部是如何获取的,可以直接用 var userRole="Admin"; 来代替更好理解。
                var userRole = "Admin";//await _sysUserInfoServices.GetUserRoleNameStr(name, pass);
                if (userRole != null)
                {
                    // 将用户id和角色名,作为单独的自定义变量封装进 token 字符串中。
                    TokenModelJwt tokenModel = new TokenModelJwt {
                        Uid = 1, Role = userRole
                    };
                    jwtStr = JwtHelper.IssueJwt(tokenModel);//登录,获取到一定规则的 Token 令牌
                    suc    = true;
                }
                else
                {
                    jwtStr = "login fail!!!";
                }

                return(Ok(new
                {
                    success = suc,
                    token = jwtStr
                }));
            }
            else
            {
                return(BadRequest(new
                {
                    success = false,
                    errorcode = 400,
                    message = "当前用户不存在,请先注册用户!"
                }));
            }
        }
Example #19
0
        public IActionResult GetJwtStr(string name, string pass)
        {
            string jwtStr = string.Empty;
            bool   suc    = false;

            // 获取用户的角色名,请暂时忽略其内部是如何获取的,可以直接用 var userRole="Admin"; 来代替更好理解。
            string userRole = ""; // await _sysUserInfoServices.GetUserRoleNameStr(name, pass);

            if (name.ToLower() == "admin")
            {
                userRole = "Admin";
            }
            else if (name.ToLower() == "System")
            {
                userRole = "System";
            }
            else if (name.ToLower() != "")
            {
                userRole = "User";
            }

            if (userRole != "")
            {
                // 将用户id和角色名,作为单独的自定义变量封装进 token 字符串中。
                TokenModelJwt tokenModel = new TokenModelJwt {
                    Uid = 1, Role = userRole
                };
                jwtStr = JwtHelper.IssueJwt(tokenModel);//登录,获取到一定规则的 Token 令牌
                suc    = true;
            }
            else
            {
                jwtStr = "login fail!!!";
            }

            return(Ok(new
            {
                success = suc,
                token = jwtStr
            }));
        }
Example #20
0
        public IActionResult GetJwtStrForNuxt(string name, string pass)
        {
            string jwtStr = string.Empty;
            bool   suc    = false;

            //这里就是用户登陆以后,通过数据库去调取数据,分配权限的操作
            //这里直接写死了
            if (name == "admins" && pass == "admins")
            {
                TokenModelJwt tokenModel = new TokenModelJwt
                {
                    Uid  = 1,
                    Role = "Admin"
                };
                return(Ok(JwtHelper.IssueJwt(tokenModel)));
            }
            else
            {
                return(BadRequest("login fail!!!"));
            }
        }
Example #21
0
        public async Task <Unit> Handle(UserLoginCommand request, CancellationToken cancellationToken)
        {
            if (!request.IsValid())
            {
                // 错误信息收集
                NotifyValidationErrors(request);
                // 返回,结束当前线程
                await _Bus.RaiseEvent(new DomainNotification("Sucess", "false"));

                return(await Task.FromResult(new Unit()));
            }
            var model = await _UserRepository.GetModelAsync(u => u.Name == request.UserName && u.Password == Encrypt.EncryptPassword(request.Password));

            if (model != null)
            {
                var role = await _RoleManngeRepository.GetModelAsync(u => u.Id == (model.Id));

                if (role != null)
                {
                    TokenModelJwt t = new TokenModelJwt
                    {
                        Role = role.RoleName,
                        Uid  = ((role.Id)),
                        Name = model.Name,
                    };
                    var token = _JwtInterface.IssueJwt(t);
                    await _Bus.RaiseEvent(new DomainNotification("Sucess", "true"));

                    await _Bus.RaiseEvent(new DomainNotification("data", token));

                    return(await Task.FromResult(new Unit()));
                }
            }
            await _Bus.RaiseEvent(new DomainNotification("Sucess", "false"));

            await _Bus.RaiseEvent(new DomainNotification("data", "登录失败"));

            return(await Task.FromResult(new Unit()));
        }
Example #22
0
        public dynamic GetJwtStr(string loginName, string passWord)
        {
            string jwtStr = string.Empty;
            bool   status = false;

            if (loginName == "Admin")
            {
                TokenModelJwt tokenModel = new TokenModelJwt()
                {
                    Uid  = 1,
                    Role = "Admin",
                    Work = "管理员"
                };
                jwtStr = JwtHelper.GetJwtToken(tokenModel);
                status = true;
            }
            else
            {
                jwtStr = "验证失败!";
            }
            return(Ok(new { success = status, data = jwtStr }));
        }
Example #23
0
        /// <summary>
        /// 解析
        /// </summary>
        /// <param name="jwtStr"></param>
        /// <returns></returns>
        public static TokenModelJwt SerializeJwt(string jwtStr)
        {
            var jwtHandler            = new JwtSecurityTokenHandler();
            JwtSecurityToken jwtToken = jwtHandler.ReadJwtToken(jwtStr);
            object           role;

            try
            {
                jwtToken.Payload.TryGetValue(ClaimTypes.Role, out role);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
            var tm = new TokenModelJwt
            {
                Uid  = (jwtToken.Id).ObjToInt(),
                Role = role != null?role.ObjToString() : "",
            };

            return(tm);
        }
Example #24
0
        public async Task <MessageModel <object> > Login(string loginname, string password)
        {
            if (!string.IsNullOrEmpty(loginname) && !string.IsNullOrEmpty(password))
            {
                //校验用户名、密码
                var pwd   = password.ToMd5_32();
                var users = await _services.QueryAsync(it => it.Loginname == loginname && it.Password == pwd && it.Enable);

                if (users.Any())
                {
                    var user          = users[0];
                    var tokenModelJwt = new TokenModelJwt()
                    {
                        Uid  = user.Id,
                        Role = user.Name
                    };
                    var jwtStr = IssueJwt(tokenModelJwt);

                    return(MessageModel <object> .Success(jwtStr));
                }
            }

            return(new MessageModel <object>(HttpStatusEnum.PermissionNoAccess));
        }
Example #25
0
        public async Task <object> GetJwtStr(string name, string pass)
        {
            string jwtStr = String.Empty;
            bool   suc    = false;

            if (name == "admins" && pass == "admins")
            {
                TokenModelJwt tokenModel = new TokenModelJwt();
                tokenModel.Uid  = 1;
                tokenModel.Role = "Admin";
                jwtStr          = JwtHelper.IssueJwt(tokenModel);
                suc             = true;
            }
            else
            {
                jwtStr = "Login Fail!!";
            }
            var result = new
            {
                data = new { success = suc, token = jwtStr }
            };

            return(Json(result));
        }
Example #26
0
        static async Task Main(string[] args)
        {
            string jwt = JwtHelper.IssueJwt(new TokenModelJwt()
            {
                Uid  = 1,
                Role = "admin"
            });

            Console.WriteLine(jwt);
            TokenModelJwt modelJwt = JwtHelper.SerializeJwt(jwt);

            Console.WriteLine(modelJwt.Uid);
            Console.WriteLine(modelJwt.Role);
            //IUserService service = new UserService(new UserRepository(new UnitWork(new StudentScoreContext())));
            //long id = await service.Add(new Users()
            //{
            //    Account = "123456",
            //    Password = "******",
            //});
            //IRoleService roleService = new RoleService(new RoleRepository(new UnitWork(new StudentScoreContext())));
            //long roleId = await roleService.Add(new Roles()
            //{
            //    RoleName = "admin"
            //});
            //IUserRoleService userRoleService = new UserRoleService(new UserRoleRepository(new UnitWork(new StudentScoreContext())));
            //long userRoleId = await userRoleService.Add(new UserRole()
            //{
            //    RoleId = 1,
            //    UserId = 1
            //});
            //Console.WriteLine(id);
            //Console.WriteLine(roleId);
            //Console.WriteLine(userRoleId);
            //IStudentInfoService service = new StudentInfoService(new StudentInfoRepository());
            //var task = await service.Add(new StudentInfo(){
            //    Name = "wangwu",
            //    StudentNumber = "1456984",
            //    Sex = '女',
            //    Age = 19,
            //    ReportCard = new ReportCard()
            //    {
            //        Chinese = 88,
            //        Math = 99,
            //        English = 89
            //    },
            //    AllStudentClass = new AllStudentClass()
            //    {
            //        Grades = "大二3班"
            //    }
            //});
            //Console.WriteLine(task);


            //IStudentInfoRepository repositoryBase = new StudentInfoRepository();
            //var allBase = repositoryBase.QueryAll().ToList();
            //foreach (StudentInfo info in allBase)
            //{
            //    Console.WriteLine(info.Name);
            //}
            //long add = await repositoryBase.Add(new StudentInfo()
            //{
            //    Name = "汪大椎",
            //    StudentNumber = "1236522289",
            //    Sex = '男',
            //    Age = 30,
            //    ReportCardID = 2,
            //    StudentClassID = 2
            //});
            //Console.WriteLine("标记"+add);
            //bool update = await repositoryBase.Update(new StudentInfo()
            //{
            //    ID = 7,
            //    Name = "汪大椎",
            //    StudentNumber = "1236522289",
            //    Sex = '男',
            //    Age = 40,
            //    ReportCardID = 1,
            //    StudentClassID = 1
            //});
            //Console.WriteLine(update);
            //var byId = await repositoryBase.DeleteById(7);
            //bool byId = await repositoryBase.DeleteByObj(new StudentInfo()
            //{
            //    ID = 7,
            //    Name = "汪大椎",
            //});
            //Console.WriteLine(byId);
            //var byId = await repositoryBase.QueryById(1);
            //Console.WriteLine(byId);
        }
Example #27
0
        public ActionResult Get1231232(int id, String token)
        {
            TokenModelJwt aa = JwtHelper.SerializeJwt(token);

            return(Ok("value"));
        }
Example #28
0
        public MessageModel GetNavigationBar()
        {
            var authorization = HttpContext.Request.Headers["Authorization"];

            if (string.IsNullOrWhiteSpace(authorization) || authorization.ToString() == "")
            {
                _msg.Success = false;
                _msg.Message = "没有token,您还没有权限";
                return(_msg);
            }
            string        jwtstr = authorization.ToString().Replace("Bearer ", "");
            TokenModelJwt token  = JwtHelper.SerializeJwt(jwtstr);

            Enum.TryParse <RoleHelper.Roletype>(token.Role, out RoleHelper.Roletype roletype);
            int   roleId = (int)roletype;
            Roles model  = _rolesService.GetModel(a => a.Id == roleId);

            if (model != null)
            {
                var          menusIds = model.Menus.Split(',');
                List <Menus> menulist = new List <Menus>();
                foreach (string item in menusIds)
                {
                    var m = _menuservice.GetModel(a => a.Id == int.Parse(item));
                    if (m != null)
                    {
                        menulist.Add(m);
                    }
                }
                List <NavigationBar> all = new List <NavigationBar>();
                all = menulist.Select(child => new NavigationBar
                {
                    id    = child.Id,
                    name  = child.MenuName,
                    pid   = child.Fid,
                    order = 1,
                    path  = child.MenuUrl,
                    meta  = new NavigationBarMeta
                    {
                        requireAuth = true,
                        title       = child.MenuName,
                        NoTabPage   = true
                    }
                }).ToList();

                //这时,所有角色所对应 菜单列表已经出来
                NavigationBar rootRoot = new NavigationBar()
                {
                    id      = 0,
                    pid     = 0,
                    order   = 0,
                    name    = "根节点",
                    path    = "",
                    iconCls = "",
                    meta    = new NavigationBarMeta(),
                };
                Recursion(all, rootRoot);
                _msg.Response = rootRoot;
            }

            _msg.Success = true;
            _msg.Message = "路由节点获取成功!";
            return(_msg);
        }
Example #29
0
        public async Task <object> GetToke([FromBody] LoginViewModel model)
        {
            string JwtStr  = string.Empty;
            bool   success = false;


            if (string.IsNullOrEmpty(model.UserName) || string.IsNullOrEmpty(model.UserPwd))
            {
                return("userName or password invalid");
            }
            else
            {
                User user = await _userRepository.IsExitsAccount(new User
                {
                    UserName = model.UserName,
                    Pwd      = MD5Tool.Encrypt(model.UserPwd)
                });

                if (user.UserName != model.UserName)
                {
                    return(Ok(new
                    {
                        jwt = "",
                        userName = model.UserName,
                        msg = "userName or password Error!!!",
                        success = success
                    }));;
                }
                else
                {
                    TokenModelJwt tokenModelJwt = new TokenModelJwt {
                        Uid = 1, Role = user.RealName
                    };
                    //得到Token
                    JwtStr  = TokenManager.IssueJwt(tokenModelJwt);
                    success = true;

                    return(Ok(new
                    {
                        jwt = JwtStr,
                        userName = user.RealName,
                        msg = "pass",
                        success = success
                    }));
                }
            }
            ////角色需从DB中查询得到
            //var userRole = "Admin";

            //if (userRole != null)
            //{
            //    TokenModelJwt tokenModelJwt = new TokenModelJwt { Uid = 1, Role = userRole };
            //    //得到Token
            //    JwtStr = TokenManager.IssueJwt(tokenModelJwt);
            //    success = true;
            //}

            //return Ok(new
            //{
            //    jwt = JwtStr,
            //    userName="******",
            //    success = success
            //}) ;
        }
Example #30
0
        public async Task <object> GetJwtToken(TokenModelJwt model)
        {
            var jwtStr = JWTHelper.IssueJwt(model);

            return(Ok(new { code = "200", jwt = jwtStr }));
        }