将.NET Core 2.0与Jwt承载认证一起使用。
当我在使用IIS Express的localhost上运行时,我的登录功能无缝地工作。
然而,当我部署到Prod Server时,该网站允许我登录,但在我得到“401 Unauthorized”之后。
即使登录后超时时间设置为30分钟,并且在Prod服务器上正确设置。
好像我错过了IIS中的设置。 看到这个链接并进行了更改,但问题仍然存在。 Similar issue
任何指示赞赏。
Startup.cs>>
public class Startup
{
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: false,
reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables();
Configuration = builder.Build();
_env = env;
}
public IConfigurationRoot Configuration { get; }
public IHostingEnvironment _env { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.RequireHttpsMetadata = false;
options.IncludeErrorDetails = true;
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
ValidIssuer = Configuration.GetSection("AppSettings")["WebApiBaseUrl"],
ValidAudience = Configuration.GetSection("AppSettings")["WebBaseUrl"],
IssuerSigningKey = TokenAuthOption.Key,
ClockSkew = TimeSpan.Zero
};
});
services.AddMvc().AddJsonOptions(options =>
{
options.SerializerSettings.ContractResolver = new ReadOnlyJsonContractResolver();
options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
});
services.AddOptions();
services.AddSingleton<IConfiguration>(Configuration);
services.AddSingleton<IHostingEnvironment>(_env);
services.AddMvcCore().AddJsonFormatters().AddXmlSerializerFormatters().AddFormatterMappings().AddXmlDataContractSerializerFormatters();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, DBContext context)
{
app.UseCors("CorsPolicy");
app.UseSession();
app.UseAuthentication();
app.UseMvc();
app.UseStaticFiles();
}
}
由于 Maiur