Ejemplo n.º 1
0
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="jwtTokenProvider"></param>
 /// <param name="repository"></param>
 public AuthController(JwtBearerConfig jwtBearerConfig, JwtTokenProvider jwtTokenProvider, IRepository <Users, string> repository, ILogger logger)
 {
     _jwtBearerConfig  = jwtBearerConfig;
     _jwtTokenProvider = jwtTokenProvider;
     _repository       = repository;
     _logger           = logger;
 }
Ejemplo n.º 2
0
Archivo: Startup.cs Proyecto: Alice52/C
 public Startup(ILogger <Startup> logger, IConfiguration configuration, IHostingEnvironment env)
 {
     _logger       = logger;
     Configuration = configuration;
     SwaggerConfig = new SwaggerConfig();
     Configuration.GetSection("SwaggerConfig").Bind(SwaggerConfig);
     JwtBearerConfig = new JwtBearerConfig();
     Configuration.GetSection("JwtBearerConfig").Bind(JwtBearerConfig);
 }
Ejemplo n.º 3
0
        public Startup(IHostingEnvironment env)
        {
            _env = env;
            _appConfiguration = env.GetAppConfiguration();

            _jwtBearerConfig = new JwtBearerConfig
            {
                IsEnabled    = true,
                Issuer       = "CXY.CJS",
                Audience     = "CXY.CJS",
                ValidMinutes = 30,
                PrivateKeys  = ""
            };

            _appConfiguration.GetSection("Authentication:JwtBearer").Bind(_jwtBearerConfig);
        }
Ejemplo n.º 4
0
        public void InstallServices(IServiceCollection services, IConfiguration configuration)
        {
            var jwtBearerConfig = new JwtBearerConfig();

            configuration.Bind(nameof(JwtBearerConfig), jwtBearerConfig);

            services.AddSingleton(jwtBearerConfig);

            services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
            .AddJwtBearer(options =>
            {
                options.TokenValidationParameters = new TokenValidationParameters
                {
                    ValidateIssuer   = true,
                    ValidateAudience = true,
                    ValidateLifetime = true,
                    ValidIssuer      = "Advert",
                    ValidAudience    = "Clients",
                    IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(jwtBearerConfig.Secret))
                };
            });
        }
Ejemplo n.º 5
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddCors();
            services.AddMvc()
            .SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
            .AddJsonOptions(options =>
            {
                options.SerializerSettings.MaxDepth = 2;
                options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
                // options.SerializerSettings.ContractResolver = new DefaultContractResolver();
                // options.SerializerSettings.DateFormatString = "yyyy-MM-dd";
            });

            // 分布式缓存
            services.AddDistributedMemoryCache();
            services.AddSession();

            services.AddDbContextPool <ZDDBContext>(option =>
            {
                option.UseSqlServer(Configuration.GetConnectionString("SqlServerConection"));
                // .UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking);
                option.UseLoggerFactory(_loggerFactory);
            });

            MongodbHost mongoDBConn = new MongodbHost();

            Configuration.GetSection("MongoDB").Bind(mongoDBConn);
            services.AddTransient <MongoDataBaseContext>(option =>
            {
                return(new MongoDataBaseContext(mongoDBConn));
            });

            RedisConfig redisConfig = new RedisConfig();

            Configuration.GetSection("RedisConfig").Bind(redisConfig);
            services.AddRedisClient(redisConfig);

            // 仓储注入都写在这里
            services.AddRepositoryService();
            _logger.LogInformation("Add Repo Services to service");
            // appsetting配置注入在这里
            services.AddConfigureService(Configuration);
            _logger.LogInformation("Add Configure Services to service");

            // Cookie验证
            // services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme).AddCookie(option =>
            // {
            //    option.LoginPath = "/api/account/login";
            // });

            // services.AddAuthorization(options =>
            // {
            //     options.AddPolicy(Permission.ArticleAudit, policy => policy.AddRequirements(new Authorization.PermissionAuthorizationRequirement(Permission.ArticleAudit)));
            //     options.AddPolicy("AdminOnly", policy => policy.RequireRole("admin"));                       //基于角色授权
            //     options.AddPolicy("ClaimAuthorization", policy => policy.RequireClaim("claimType", "value1", "value2")); //基于Claim授权
            // });

            // JWT验证
            JwtBearerConfig jwtBearerConfig = new JwtBearerConfig();

            Configuration.GetSection("JwtBearerConfig").Bind(jwtBearerConfig);
            services.AddAuthentication(option =>
            {
                option.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                option.DefaultChallengeScheme    = JwtBearerDefaults.AuthenticationScheme;
            })
            .AddJwtBearer(option =>
            {
                // 自定义token获取方式
                // option.Events = new JwtBearerEvents()
                // {
                //     OnMessageReceived = context =>
                //     {
                //         context.Token= context.Request.Cookies["access_token"];
                //         return Task.CompletedTask;
                //     }
                // };
                option.SaveToken                 = true;
                option.RequireHttpsMetadata      = false;
                option.TokenValidationParameters = new TokenValidationParameters
                {
                    NameClaimType = JwtClaimTypes.Name,
                    // RoleClaimType = JwtClaimTypes.Role,
                    ValidIssuer              = jwtBearerConfig.Issuer,
                    ValidAudience            = jwtBearerConfig.Audience,
                    ValidateIssuer           = true,
                    ValidateAudience         = true,
                    ValidateIssuerSigningKey = true,
                    IssuerSigningKey         = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(jwtBearerConfig.Secret))
                };
            });

            services.AIDIRegister();
            services.RedisDIRegister();

            Mapper.Initialize(cfg =>
            {
                cfg.AddProfile <AuditProfile>();
                cfg.AddProfile <SystemUserProfile>();
            });

            services.AddLogging(builder =>
            {
                builder.ClearProviders();
                builder.AddConfiguration(Configuration.GetSection("Logging"))
                .AddFilter("Microsoft", LogLevel.Warning)
                .AddConsole();
            });

            // In production, the React files will be served from this directory
            services.AddSpaStaticFiles(configuration =>
            {
                configuration.RootPath = "ClientApp/build";
            });

            // services.AddSingleton<Microsoft.AspNetCore.Authorization.IAuthorizationHandler, Authorization.PermissionHandler>();
        }
Ejemplo n.º 6
0
 public JwtService(JwtBearerConfig bearerConfig)
 {
     BearerConfig = bearerConfig;
 }
 public LoginUserProvider(IHttpContextAccessor httpContextAccessor, ISystemUserRepo systemUserRepo, IOptions <JwtBearerConfig> jwtBearerConfig)
 {
     _systemUserRepo  = systemUserRepo;
     _httpContext     = httpContextAccessor.HttpContext;
     _jwtBearerConfig = jwtBearerConfig.Value;
 }