【问题标题】:Application without identity but added later now secondary authentication is not working没有身份但后来添加的应用程序现在二级身份验证不起作用
【发布时间】:2022-01-21 20:09:04
【问题描述】:

我使用 ASP.NET Core MVC 5.0 开发了我的第一个应用程序。

已经存在一个数据库,但我在新程序中实现了完整的数据库,现在问题是 ASP.NET Core 身份。所以对于身份,我按照说明搭建了脚手架,最后使用email和pass实现了默认的身份认证。

services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = false)
                .AddRoles<IdentityRole>()
                .AddEntityFrameworkStores<ApplicationDbContext>();

startup.cs 中,然后我有一个具有现有字段的模型,即 cardno、phone 并希望对此进行身份验证。在 PHP 中,使用 $_SESSION 变量真的很容易。但现在在这里我希望这发生在 ASP.NET 中,任何帮助将不胜感激。

services.AddIdentity<CnicUser, IdentityRole>().AddEntityFrameworkStores<ApplicationDbContext>();

我为自定义身份验证添加的此代码出现此错误

应用程序启动异常 System.InvalidOperationException:方案已存在:Identity.Application 在 Microsoft.AspNetCore.Authentication.AuthenticationOptions.AddScheme(字符串 name, Action`1 configureBuilder)

【问题讨论】:

    标签: c# asp.net sql-server asp.net-core asp.net-identity


    【解决方案1】:

    您尝试在您的Startup.cs 中添加两次identity service,这是不正确的。因此,快速解决方案是您必须删除其中一个,这将删除您遇到的异常。

    所以删除你之前添加的services.AddDefaultIdentity,这样它就会相应地工作。

    Note: 删除任一 addDefaultIdentities 都可以。在您的情况下,您不能在两个位置都拥有它 问题。

    【讨论】:

    • Farid 我实际上想保留默认身份程序以及希望通过模型字段(即 cardno、电话)对其他类型的用户进行身份验证
    • 如果你想用cardno, phone 额外字段验证用户,你可以使用模型验证,但如果你想同时添加两种身份,我怀疑你能做到。顺便问一下CnicUser 包含什么?
    • 如果你想使用多个身份,那么你必须使用base class,然后在你的新身份模型上实现该基类。然后在startup.cs 上添加该引用,您可以参考此example
    • Farid CnicUser 仅包含来自 IdentityUser 的继承,是的,我想实现多个身份,但就像默认身份一样,另一个是 tblemployee 模型的两个字段。
    • 好吧,在这种情况下你必须使用identity extesion。请查看this thread as well。希望能相应地指导您
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-26
    • 1970-01-01
    相关资源
    最近更新 更多