ASP.NET MVC Identity以编程方式创建用户绕过密码验证

时间:2017-07-26 13:13:00

标签: c# asp.net model-view-controller identity

在我的MVC网络应用程序中,我正在使用ASP.NET身份以及通过应用程序本身注册的任何人,我希望强制执行我们在_id中设置的密码策略。但是,我们通过我们的一个外部应用程序注册的任何人(不使用IdentityConfig)我们希望允许他们使用他们在该应用程序中拥有的密码进行传递,并在我们的系统中进行注册。

搜索失败了,在我尝试覆盖或编写自己的方法来实现这一点之前,想知道是否有人知道通过Identity实现这一目标的好方法。

2 个答案:

答案 0 :(得分:0)

当您使用密码登录时,您可能会在AccountController中使用以下内容进行登录操作:

var result = await SignInManager.PasswordSignInAsync(user.UserName, model.Password, model.RememberMe, shouldLockout: true);

如果您只想登录用户,可以使用:

var result = await SignInManager.SignInAsync(user, true, true);

答案 1 :(得分:0)

在你的外部回调中,你可以做到这一点......以下代码是使用针对MVC的OWIN安全认证实现的。

public async Task<ActionResult> ExternalLoginCallback(string returnUrl)
{
    try
    {
        var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync();
        //get the user info i.e. username/email from claim and validate this user from identity.
        //You can manually do it by fetching the data from identity tables. 
        //Match the case and generate a session and direct to home.
    }
    catch(Exception ex)
    {
    }
}

确保您已在startup.cs中注册该应用并获取用户信息,并将其置于第三方授权服务器的声明中。

//app.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions()
            //{
            //    ClientId = "",
            //    ClientSecret = ""
            //    Claims here after thentication
            //});