在我的MVC网络应用程序中,我正在使用ASP.NET身份以及通过应用程序本身注册的任何人,我希望强制执行我们在_id
中设置的密码策略。但是,我们通过我们的一个外部应用程序注册的任何人(不使用IdentityConfig
)我们希望允许他们使用他们在该应用程序中拥有的密码进行传递,并在我们的系统中进行注册。
搜索失败了,在我尝试覆盖或编写自己的方法来实现这一点之前,想知道是否有人知道通过Identity实现这一目标的好方法。
答案 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
//});