public IActionResult Login([FromBody] SysUserInfo model)
        {
            RespondResult result   = new RespondResult();
            SysUserInfo   userInfo = systemUserService.GetLoginUserInfo(model.UserName);

            //用户不存在
            if (userInfo == null)
            {
                result.is_success = false;
                result.msg        = "用户不存在";
                result.result     = null;
            }

            //判断密码
            string md5Password = Md5Helper.Md5(model.Password);

            //密码错误
            if (!userInfo.Password.Equals(md5Password))
            {
                result.is_success = false;
                result.msg        = "密码错误";
                result.result     = null;
            }
            var tokenStr = AuthConfiguer.GetJWT(model, _jwtSettings);

            result.is_success = true;
            result.msg        = "";
            result.result     = tokenStr;
            return(Ok(result));
        }
        public IActionResult Registration([FromBody] SysUserInfo model)
        {
            RespondResult result = new RespondResult();

            model.Id         = Guid.NewGuid().ToString();
            model.CreateTime = DateTime.Now;
            model.UpdateTime = null;
            model.Password   = Md5Helper.Md5(model.Password);
            int resultcount = systemUserService.AddUser(model);

            //用户注册失败
            if (resultcount == 0)
            {
                result.is_success = false;
                result.msg        = "注册失败";
                result.result     = null;
            }
            var tokenStr = AuthConfiguer.GetJWT(model, _jwtSettings);

            result.is_success = true;
            result.msg        = "注册成功";
            result.result     = tokenStr;
            return(Ok(result));
        }
Beispiel #3
0
        //用autofac替换应用程序默认注入容器。
        private IServiceProvider InitIoC(IServiceCollection services)
        {
            //配置数据源连接字符串
            var dbConnectionString = Configuration.GetConnectionString("MsSqlServer");

            services.AddDbContext <EFDbContext>(options => options.UseSqlServer(dbConnectionString));

            //设置跨域授权策略,之允许 配置【"Application:CorsOrigins"】中的地址访问接口
            services.AddCors(options => options.AddPolicy(_defaultCorsPolicyName,
                                                          builder => builder.WithOrigins(
                                                              Configuration["Application:CorsOrigins"]
                                                              .Split(",", StringSplitOptions.RemoveEmptyEntries).ToArray()
                                                              )
                                                          .AllowAnyHeader()
                                                          .AllowAnyMethod()
                                                          .AllowCredentials()));

            //版本控制 暂时不用
            //services.AddApiVersion();

            //添加 对EF 生成sql的监控
            services.AddMiniProfiler(options => {
                options.PopupShowTimeWithChildren = true;
                options.RouteBasePath             = "/profiler";
            }).AddEntityFramework();

            //添加MVC 服务
            services.AddMvc(options => {
                // 添加 CORS 授权过滤器
                options.Filters.Add(new CorsAuthorizationFilterFactory(_defaultCorsPolicyName));
                //权限过滤
                if (Configuration["JwtSettings:Isenable"] == "true")
                {
                    options.Filters.Add(new AuthorizeFilter());
                }
            }).AddJsonOptions(setupAction => {
                // 忽略循环引用,规避EntityFramework导航属性json序列化时的循环引用问题
                setupAction.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
                // 使用默认json序列化,规避字段小驼峰命名法
                //setupAction.SerializerSettings.ContractResolver = new DefaultContractResolver();
                // 设置json序列化的日期时间格式
                setupAction.SerializerSettings.DateFormatString = "yyyy-MM-dd";
            }).SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

            //配置autoMapper
            services.AddAutoMapper(typeof(ServiceProfile));

            //添加 swagger 可视化
            services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1", new Info
                {
                    Version     = "v1",
                    Title       = "CMS接口文档",
                    Description = "CMS 接口可视化"
                });
                var basePath = PlatformServices.Default.Application.ApplicationBasePath;
                var xmlPath  = Path.Combine(basePath, "TextApi.xml"); //和上面图片中xml地址相同
                c.IncludeXmlComments(xmlPath, true);                  //添加控制器层注释(true表示显示控制器注释)

                #region 启用swagger验证功能
                //添加一个必须的全局安全信息,和AddSecurityDefinition方法指定的方案名称一致即可,CoreAPI。
                var security = new Dictionary <string, IEnumerable <string> > {
                    { "CoreAPI", new string[] { } },
                };
                c.AddSecurityRequirement(security);
                c.AddSecurityDefinition("CoreAPI", new ApiKeyScheme
                {
                    Description = "JWT授权(数据将在请求头中进行传输) 在下方输入Bearer {token} 即可,注意两者之间有空格",
                    Name        = "Authorization", //jwt默认的参数名称
                    In          = "header",        //jwt默认存放Authorization信息的位置(请求头中)
                    Type        = "apiKey"
                });
                #endregion
            });

            //添加 jwt权限认证
            AuthConfiguer.Configuer(services, Configuration);

            //autofac 替换core 默认注入
            return(AutofacContainer.Init(services, Configuration));
        }