相关疑难解决方法(0)

SignInManager,它是什么以及如何使用?

我正在探索SignInManager类.但MSDN上提供的信息非常无用.它只说明提供的方法和属性.

我要找的是,

1)什么是SignInManager?2)如何使用它?3)我有自己的数据库,其中包含凭据相关信息(用户名和密码)

我如何使用SignInmanager以及如何使用它,以便我的自定义数据库用于验证用户?

我使用的是asp.net MVC 5和Visual Studio 2015.在我的示例项目中,我有一个包含操作方法的帐户控制器

  public async Task<ActionResult> ExternalLoginCallback(string returnUrl)
Run Code Online (Sandbox Code Playgroud)

但我不知道如何使用它,MSDN完全没用提供这方面的信息.任何有用的链接都会详细解释它,因为我不知道SignInManager是什么以及它的用途.

谢谢

.net c# authentication asp.net-mvc-5 asp.net-identity

46
推荐指数
1
解决办法
3万
查看次数

Windows Azure Active Directory应用程序中的"登录URL"是什么?

我在Windows Azure Active Directory中配置了我的第一个应用程序,一切正常:我可以使用我的目录中的帐户登录.

但是,我还没有完全清楚所有的概念,尤其是登录网址.工具提示说:

用户可以登录并使用您的应用的网址.您可以稍后更改.

但是用户在某处登录,login.windows.net而且,无论我在这里输入什么,身份验证都会继续工作.那么这个'登录网址'是什么?

Azure管理门户截图

azure-active-directory

16
推荐指数
1
解决办法
1万
查看次数

ASP.NET标识:授权后更新外部声明

我正在使用ASP.NET身份与几个外部登录提供程序,我需要处理以下方案:

1)用户使用外部服务登录(假设它是Facebook),应用程序从Facebook获取一些信息(姓名,电子邮件,出生日期等等).包含此信息的声明被添加到身份.

2)对于以下场景,我需要将此信息存储在应用程序Db中:

  • 管理员浏览已注册用户的列表

  • 电子邮件订阅服务将使用名字和姓氏

  • ...

问题是如果用户将更新他/她的Facebook个人资料(例如,更改电子邮件地址) - 在这种情况下我需要更新我的Db中的信息(我在AspNetUserClaims表中存储外部声明).实际上,每次外部用户通过身份验证时我都需要更新它.

这是第一次如何保存它的代码:

扩展索赔类:

public class ApplicationUserClaim : IdentityUserClaim<Guid>
{
    public string Issuer { get; set; }
    public string ClaimValueType { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

启动:

var facebookOptions = new FacebookAuthenticationOptions {
    AppId = "...",
    AppSecret = "...",
    Provider = new FacebookAuthenticationProvider {
        OnAuthenticated = (context) => {
            context.Identity.AddClaims(new[] {
                new Claim("LastName", context.User["last_name"].ToString(), ClaimValueTypes.String, "Facebook"),
                new Claim("FirstName", context.User["first_name"].ToString(), ClaimValueTypes.String, "Facebook"),
                //...Other claims
            });
        }
    }
};

facebookOptions.Scope.Add("email");
facebookOptions.Scope.Add("user_birthday");

app.UseFacebookAuthentication(facebookOptions);
Run Code Online (Sandbox Code Playgroud)

AuthController

外部登录回调:

public ActionResult …
Run Code Online (Sandbox Code Playgroud)

asp.net claims owin asp.net-identity-2

11
推荐指数
1
解决办法
1731
查看次数

asp.net核心身份提取并保存外部登录令牌并添加对本地身份的声明

我是一个stackoverflow noob,所以如果我做错了,请放轻松.

我正在使用带有默认核心身份模板(本地帐户)的asp.net核心.

我已经加入了如何在本地登录时向用户主体添加声明的方式

[HttpPost]
    [AllowAnonymous]
    [ValidateAntiForgeryToken]
    public async Task<IActionResult> Login(LoginInputModel model)
    {
        if (ModelState.IsValid)
        {
            // This doesn't count login failures towards account lockout
            // To enable password failures to trigger account lockout, set lockoutOnFailure: true

            var user = await _userManager.FindByNameAsync(model.Email);

            await _userManager.AddClaimAsync(user, new Claim("your-claim", "your-value"));
Run Code Online (Sandbox Code Playgroud)

我已经弄清楚如何从外部登录返回索赔但我无法弄清楚如何在ExternalLoginCallback函数中创建用户主体之前添加这些索引

public async Task<IActionResult> ExternalLoginCallback(string returnUrl = null, string remoteError = null)
    {
        if (remoteError != null)
        {
            ModelState.AddModelError(string.Empty, $"Error from external provider: {remoteError}");
            return View(nameof(Login));
        }

        var info = await _signInManager.GetExternalLoginInfoAsync();
        if …
Run Code Online (Sandbox Code Playgroud)

asp.net authentication cookies claims-based-identity asp.net-identity-2

8
推荐指数
1
解决办法
3776
查看次数

ASP Net Core - 将外部身份提供商与个人用户帐户混合以进行审计跟踪

我已经使用个人用户帐户创建了默认的 ASP Net Core MVC Web 应用程序。我向 AspNetUsers 表添加了一个自定义 UserID INT 字段,并将其作为外键链接到所有其他自定义表,以便我可以跟踪用户在数据库中插入/更新的记录。我这样做是因为我更喜欢使用 INT 字段作为主键。在这种情况下,一切正常。

我现在正在考虑使用外部身份提供程序,例如 Azure Active Directory,但是我无法弄清楚如何将 Azure AD(或任何其他身份提供程序)中的用户链接到我的本地数据库表以维护用户 ID 外键约束。从我所有的研究中,我找不到任何关于这种情况的文章。

如何将外部身份提供商的用户信息链接到我的本地数据库表?我担心我可能需要在外部身份提供程序和本地 AspNet 用户表中双重处理用户帐户管理,以使用其他自定义表维护外键,这看起来很疯狂。

也许我遗漏了一些明显的东西,或者我的方法都是错误的,所以如果有更好的替代方案来跟踪谁在使用外部身份提供程序的 ASP Net Core Web 应用程序的数据库表中做了什么,我会很乐意采用它。

authentication azure-active-directory asp.net-core-mvc asp.net-core-identity

5
推荐指数
1
解决办法
1620
查看次数