无法初始化身份Cookie

时间:2017-07-24 17:09:40

标签: c# asp.net asp.net-mvc asp.net-core asp.net-identity

我创建了一个ASP.NET Core网站,我正在尝试设置身份验证。 FormsAuthentication消失了,所以我想我必须使用Identity。我创建了一个使用HttpContext SignInAsync的系统,但是它表示cookie没有初始化。我尝试将UseIdentity和AddIdentity以及其他10个东西添加到Startup.cs,但是它说没有定义。我也试过获得Identy NuGet包。

编辑: Startup.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using StarLegacy.Web.Code.Utils;
using System.IO;
using Microsoft.AspNetCore.Authentication.Cookies;

namespace StarLegacy.Web
{
    public class Startup
    {
        public Startup(IHostingEnvironment env)
        {
            var builder = new ConfigurationBuilder()
                .SetBasePath(env.ContentRootPath)
                .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
                .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
                .AddEnvironmentVariables();
            Configuration = builder.Build();
            try
            {
                DBUtils.Init();
            }
            catch (Exception exception)
            {
                File.WriteAllText("startuperror.txt", exception.ToString());
                Console.Error.WriteLine(exception);
            }
        }

        public IConfigurationRoot Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services) {
            services.AddAntiforgery();
            services.AddAuthorization();
            // Add framework services.
            services.AddMvc();
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
        {
            loggerFactory.AddConsole(Configuration.GetSection("Logging"));
            loggerFactory.AddDebug();

            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
                app.UseBrowserLink();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
            }

            app.UseStaticFiles();

            app.UseCookieAuthentication();

            app.UseMvc(config =>
            {
                config.MapRoute(
                name: "Default",
                template: "{controller}/{action}/{id?}",
                defaults: new { controller = "Home", action = "Index" }
                );
            });
        }
    }
}

1 个答案:

答案 0 :(得分:0)

  1. 将以下内容添加到.csproj:
  2. // Auth Identity的包

    <PackageReference Include="Microsoft.AspNetCore.Authentication" Version="1.1.2" />
    <PackageReference Include="Microsoft.AspNetCore.Identity" Version="1.1.2" />
    
    1. 运行cmd dotnet restore

    2. 将使用声明:using Microsoft.AspNetCore.Authorization;添加到Startup.cs

    3. 添加到Startup.cs方法public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)您已经完成了第4步):

          app.UseCookieAuthentication();
          app.UseMvc();