예제 #1
0
        public string GetEncodedJwtToken(string userEmail)
        {
            var claims = new List <Claim> {
                new Claim(JwtRegisteredClaimNames.Sub, userEmail)
            };


            var jwtToken = new JwtSecurityToken(
                TokenConfig.ISSUER,
                TokenConfig.AUDIENCE,
                claims,
                expires: DateTime.Now.Add(TimeSpan.FromMinutes(TokenConfig.LIFETIME)),
                signingCredentials: new SigningCredentials(TokenConfig.GetSymmetricSecurityKey(), SecurityAlgorithms.HmacSha256)
                );

            return(new JwtSecurityTokenHandler().WriteToken(jwtToken));
        }
예제 #2
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc(opt =>
            {
                opt.EnableEndpointRouting = false;
            })
            .AddFluentValidation(fv =>
            {
                fv.RegisterValidatorsFromAssemblyContaining <RegisterValidator>();
                fv.RegisterValidatorsFromAssemblyContaining <BookValidator>();
                fv.RegisterValidatorsFromAssemblyContaining <LoginValidator>();
            })
            .SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

            services.AddDbContext <ApplicationContext>(options =>
            {
                options.UseSqlServer(Configuration["ConnectionStrings:NakkisApp"]);
            });

            services.AddIdentity <User, Role>(options =>
            {
                options.Password.RequireDigit           = false;
                options.Password.RequireUppercase       = false;
                options.Password.RequireNonAlphanumeric = false;
                options.Password.RequiredLength         = 6;
            })
            .AddEntityFrameworkStores <ApplicationContext>()
            .AddDefaultTokenProviders();

            services.AddScoped(x => x.GetRequiredService <ApplicationContext>().Carts);
            services.AddScoped(x => x.GetRequiredService <ApplicationContext>().CartItems);
            services.AddScoped(x => x.GetRequiredService <ApplicationContext>().Categories);
            services.AddScoped(x => x.GetRequiredService <ApplicationContext>().Products);
            services.AddScoped(x => x.GetRequiredService <ApplicationContext>().Departments);
            services.AddScoped(x => x.GetRequiredService <ApplicationContext>().Variants);

            services.AddCors(options =>
            {
                options.AddPolicy("Policy",
                                  builder =>
                {
                    builder.AllowAnyOrigin()
                    .AllowAnyHeader()
                    .AllowAnyMethod();
                });
            });

            JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear();
            services
            .AddAuthentication(options =>
            {
                options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                options.DefaultScheme             = JwtBearerDefaults.AuthenticationScheme;
                options.DefaultChallengeScheme    = JwtBearerDefaults.AuthenticationScheme;
            })
            .AddJwtBearer(cfg =>
            {
                cfg.RequireHttpsMetadata      = false;
                cfg.SaveToken                 = true;
                cfg.TokenValidationParameters = new TokenValidationParameters
                {
                    ValidateIssuer = true,
                    ValidIssuer    = TokenConfig.ISSUER,

                    ValidateAudience = true,
                    ValidAudience    = TokenConfig.AUDIENCE,

                    ValidateLifetime = true,

                    IssuerSigningKey         = TokenConfig.GetSymmetricSecurityKey(),
                    ValidateIssuerSigningKey = true,
                };
            });
        }