Angularjs 如何在MVC5中创建具有成员资格的新用户

Angularjs 如何在MVC5中创建具有成员资格的新用户,angularjs,asp.net-mvc,c#-4.0,asp.net-membership,Angularjs,Asp.net Mvc,C# 4.0,Asp.net Membership,我已经用mvc c在angularjs中创建了一个小演示,我想使用成员资格提供者提供一个登录工具。我已经尝试过从数据库获取记录的简单代码,但它不会从数据库返回任何用户。数据库中有用户 web.config文件中的成员身份设置: <membership defaultProvider="AspNetSqlMembershipProvider"> <providers> <clear /> <add name="AspNetSqlMemb

我已经用mvc c在angularjs中创建了一个小演示,我想使用成员资格提供者提供一个登录工具。我已经尝试过从数据库获取记录的简单代码,但它不会从数据库返回任何用户。数据库中有用户

web.config文件中的成员身份设置:

<membership defaultProvider="AspNetSqlMembershipProvider">
  <providers>
    <clear />
    <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="DefaultConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="true" maxInvalidPasswordAttempts="50" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
  </providers>
</membership>

有人知道问题出在哪里吗?谢谢。

如果您有Azure订阅,那么我建议您使用Azure AD B2C。这允许您专门为您的应用程序创建Azure广告实例。它们支持Azure广告帐户,您可以配置其他身份提供商,如Google、Facebook、MS个人帐户(outlook.com)、Linkedin等

它允许您在门户中定义自定义配置文件属性,并允许您为“新用户注册”、“编辑我的配置文件”、“密码重置”等配置布局/体验

如果您在应用程序中使用Azure AD B2C和ASP.NET标识,则无需自己注册用户。但是,如果您希望在注册后访问新用户的数据或声明,您应该能够通过修改
AccountController.cs

在my
AccountController.cs
中:

public void SignUpSignIn(string redirectUrl = "")
{
    // this redirect url is where the user is routed after authentication.
    var default_redirectUrl = "/account/gateway"; 
    if (string.IsNullOrWhiteSpace(redirectUrl))
    {
        redirectUrl = default_redirectUrl;
    }
    // Use the default policy to process the sign up / sign in flow
    HttpContext.GetOwinContext().Authentication.Challenge(new AuthenticationProperties { RedirectUri = redirectUrl });
    return;
}

// this is where the user is redirected after sign-up
public async Task<ActionResult> Gateway()
{
    // if you cast the User.Identity as 
    // System.Security.Claims.ClaimsIdentity then you can access 
    // the claims from the identity provider.
    var userClaims = (User.Identity as ClaimsIdentity).Claims;

    var issuer_claim = userClaims.FindClaim("iss")?.Value;
    var nameid_claim = userClaims.FindClaim("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier")?.Value;
    var audience_claim = userClaims.FindClaim("aud")?.Value;
    var auth_time_claim = userClaims.FindClaim("auth_time")?.Value;
    var idprovider_claim = userClaims.FindClaim("http://schemas.microsoft.com/identity/claims/identityprovider")?.Value;
    var displayname_claim = userClaims.FindClaim("name")?.Value;
    var objectid_claim = userClaims.FindClaim("http://schemas.microsoft.com/identity/claims/objectidentifier")?.Value;
    var country_claim = userClaims.FindClaim("country")?.Value;
    var newUser_claim = userClaims.FindClaim("newUser")?.Value;
    var emails_claim = userClaims.FindClaim("emails")?.Value;

    // Then you can use this claims as needed. 

    // after this navigate to your homepage or whatever makes sense.
    return RedirectToAction("Index", "Home");

}
public void SignUpSignIn(字符串重定向url=”“)
{
//此重定向url是身份验证后路由用户的位置。
var default_redirectUrl=“/account/gateway”;
if(string.IsNullOrWhiteSpace(重定向URL))
{
redirectUrl=默认的\u redirectUrl;
}
//使用默认策略处理注册/登录流
HttpContext.GetOwinContext().Authentication.Challenge(新的AuthenticationProperties{RedirectUri=redirectUrl});
返回;
}
//这是用户注册后重定向的地方

公共异步任务

如果您有Azure订阅,那么我建议使用Azure AD B2C。这允许您专门为您的应用程序创建Azure广告实例。它们支持Azure广告帐户,您可以配置其他身份提供商,如Google、Facebook、MS个人帐户(outlook.com)、Linkedin等

它允许您在门户中定义自定义配置文件属性,并允许您为“新用户注册”、“编辑我的配置文件”、“密码重置”等配置布局/体验

如果您在应用程序中使用Azure AD B2C和ASP.NET标识,则无需自己注册用户。但是,如果您希望在注册后访问新用户的数据或声明,您应该能够通过修改
AccountController.cs

在my
AccountController.cs
中:

public void SignUpSignIn(string redirectUrl = "")
{
    // this redirect url is where the user is routed after authentication.
    var default_redirectUrl = "/account/gateway"; 
    if (string.IsNullOrWhiteSpace(redirectUrl))
    {
        redirectUrl = default_redirectUrl;
    }
    // Use the default policy to process the sign up / sign in flow
    HttpContext.GetOwinContext().Authentication.Challenge(new AuthenticationProperties { RedirectUri = redirectUrl });
    return;
}

// this is where the user is redirected after sign-up
public async Task<ActionResult> Gateway()
{
    // if you cast the User.Identity as 
    // System.Security.Claims.ClaimsIdentity then you can access 
    // the claims from the identity provider.
    var userClaims = (User.Identity as ClaimsIdentity).Claims;

    var issuer_claim = userClaims.FindClaim("iss")?.Value;
    var nameid_claim = userClaims.FindClaim("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier")?.Value;
    var audience_claim = userClaims.FindClaim("aud")?.Value;
    var auth_time_claim = userClaims.FindClaim("auth_time")?.Value;
    var idprovider_claim = userClaims.FindClaim("http://schemas.microsoft.com/identity/claims/identityprovider")?.Value;
    var displayname_claim = userClaims.FindClaim("name")?.Value;
    var objectid_claim = userClaims.FindClaim("http://schemas.microsoft.com/identity/claims/objectidentifier")?.Value;
    var country_claim = userClaims.FindClaim("country")?.Value;
    var newUser_claim = userClaims.FindClaim("newUser")?.Value;
    var emails_claim = userClaims.FindClaim("emails")?.Value;

    // Then you can use this claims as needed. 

    // after this navigate to your homepage or whatever makes sense.
    return RedirectToAction("Index", "Home");

}
public void SignUpSignIn(字符串重定向url=”“)
{
//此重定向url是身份验证后路由用户的位置。
var default_redirectUrl=“/account/gateway”;
if(string.IsNullOrWhiteSpace(重定向URL))
{
redirectUrl=默认的\u redirectUrl;
}
//使用默认策略处理注册/登录流
HttpContext.GetOwinContext().Authentication.Challenge(新的AuthenticationProperties{RedirectUri=redirectUrl});
返回;
}
//这是用户注册后重定向的地方

public async Task

成员身份应该有一个登录方法-请注意,ASP.NET identity替代了成员身份方法:@Brian mains我尝试了登录成员身份。ValidateUsers()方法,但我在内部总是遇到错误,它调用一个存储过程-您可以尝试使用结果调用该ASP.NET存储过程,看看它是否匹配…对@Brian的评论有进一步的建议。同时运行SQL事件探查器以查看存储过程的执行情况以及返回的结果。如果你使用的是MVC5,请查看ASP.NET标识。不推荐使用成员身份。成员身份应该有一个登录方法-请注意,ASP.NET identity替代了成员身份方法:@Brian mains我尝试了登录成员身份。ValidateUsers()方法,但我在内部总是遇到错误,它调用一个存储过程-您可以尝试使用结果调用该asp.net存储过程,并查看它是否匹配…对@Brian的评论的进一步建议。同时运行SQL事件探查器以查看存储过程的执行情况以及返回的结果。如果你使用的是MVC5,请查看ASP.NET标识。会员资格不受欢迎。