如何使用ASP.NET Core Identity在登录时向浏览器发送Cookie?

时间:2020-06-25 19:08:29

标签: c# entity-framework-core asp.net-core-3.1 asp.net-core-identity

我正在使用身份在asp.net核心应用程序上构建身份验证。我遵循了2个不同的教程,但是在两种情况下,我的应用程序都不会向浏览器发送Cookie。我认为我错过了一些重要的东西,但我不知道是什么。你能指出我正确的方向吗?这是相关的代码:

public class Startup
{
    public IConfiguration Configuration { get; }

    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddDbContextPool<IdentityDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

        services.AddIdentity<IdentityUser, IdentityRole>()
            .AddEntityFrameworkStores<IdentityDbContext>();

        services.AddControllersWithViews();
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        app.UseDeveloperExceptionPage();

        app.UseStaticFiles();

        app.UseRouting();

        app.UseAuthentication();

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute(
                name: "default",
                pattern: "{controller=Home}/{action=Index}/{id?}");
        });
    }
}

public class HomeController : Controller
{
    private readonly SignInManager<IdentityUser> _signInManager;
    private readonly UserManager<IdentityUser> _userManager;

    public HomeController(UserManager<IdentityUser> userManager, SignInManager<IdentityUser> signInManager)
    {
        _signInManager = signInManager;
        _userManager = userManager;
    }

    public async Task<IActionResult> SignUp()
    {
        await _userManager.CreateAsync(new IdentityUser("my_name"), "Secret123:");

        return Ok("Signed up");
    }

    public async Task<IActionResult> SignIn()
    {
        var result = await _signInManager.PasswordSignInAsync("my_name", "Secret123:", true, false);

        if(!result.Succeeded)
            return Ok("Sign in failed");

        return Ok("Signed in");
    }
}

编辑:我创建了一个新项目,并粘贴了这两个类,并在其中安装了相同的NuGet包,并且cookie起作用了。我在旧项目的其他地方遇到了问题。我仍然不知道在哪里。如果您发表评论,我将不胜感激。

0 个答案:

没有答案