【问题标题】:aspNet Core - identity - applicationUser, not automatically generated?aspNet Core - 身份 - applicationUser,不是自动生成的?
【发布时间】:2021-05-09 14:05:12
【问题描述】:

我想在使用 Microsoft 身份框架的网站中创建 Linkedin 登录。但我不知道如何使用 ApplicationUser,它说它丢失了,我不想生成一个空类。不知道该怎么办。 Ms 身份框架应该自己创建一个吗?

我有(ms studio 2017 v15.9.31).NET framework v4.8 aspnet core app 2.1.1,aspnetCore razor design 2.1.2,aspnet security oauth linkedin 2.0.0

using System.Threading.Tasks;
using Linkedin.Data;
using Microsoft.AspNetCore.Authentication.OAuth;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;

namespace Linkedin
{
public class Startup
{
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public IConfiguration Configuration { get; }

    // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddDbContext<ApplicationDbContext>(options =>
        options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
        services.AddIdentity<ApplicationUser, IdentityRole>()
            .AddEntityFrameworkStores<ApplicationDbContext>()
            .AddDefaultTokenProviders();
       
        services.AddAuthentication().AddLinkedIn(options => {
            options.ClientId = Configuration["Authentication:LinkedIn:ClientId"];
            options.ClientSecret = Configuration["Authentication:LinkedIn:ClientSecret"];
            options.Events = new OAuthEvents()
            {
                OnRemoteFailure = loginFailureHandler => 
            {

                var authProperties = options.StateDataFormat.Unprotect(loginFailureHandler.Request.Query["state"]);
                loginFailureHandler.Response.Redirect("/Account/login");
                loginFailureHandler.HandleResponse();
                return Task.FromResult(0);
            }
            };
        });

        services.Configure<CookiePolicyOptions>(options =>
        {
            // This lambda determines whether user consent for non-essential cookies is needed for a given request.
            options.CheckConsentNeeded = context => true;
            options.MinimumSameSitePolicy = SameSiteMode.None;
        });


        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
    }

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
            //app.UseBrowserLink();
            app.UseDeveloperExceptionPage();
            app.UseDatabaseErrorPage();
        }
        else
        {
            app.UseExceptionHandler("/Home/Error");
            app.UseHsts();
        }

        app.UseHttpsRedirection();
        app.UseStaticFiles();
        app.UseCookiePolicy();

        app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "{controller=Home}/{action=Index}/{id?}");
        });
    } //configure
} // startup

}

【问题讨论】:

    标签: asp.net-mvc asp.net-identity linkedin


    【解决方案1】:

    如果您不需要自定义 Identity 框架中使用的 User 模型,那么只需使用 IdentityUser 类。 ApplicationUser 类(或任何你想调用的类)通常在向 User 模型添加自定义属性时使用。

    将这个:services.AddIdentity&lt;ApplicationUser, IdentityRole&gt;() 改为 services.AddIdentity&lt;IdentityUser, IdentityRole&gt;()

    更多信息可以在这里找到Customizing Identity Model

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-19
      • 2019-08-08
      • 1970-01-01
      相关资源
      最近更新 更多