WebSecurity的简单用法

添加一个带有使用窗体身份验证的帐户控制器的默认 ASP.NET MVC 4 项目,如果用codefirst会自动生成几张表。

<connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=.;Initial Catalog=WebSecurity;Persist Security Info=True;User ID=sa;Password=1q2w3e4r" providerName="System.Data.SqlClient" />
  </connectionStrings>
 public class EntityContext : DbContext
    {
        public EntityContext()
            : base("DefaultConnection")
        {
           
        }
        public DbSet<UserProfile> UserProfiles { get; set; }

        //protected override void OnModelCreating(DbModelBuilder modelBuilder)
        //{
        //    base.OnModelCreating(modelBuilder);

        //    modelBuilder.Entity<UserProfile>().ToTable("");
         
        //}
    }

数据库生成5张表:

UserProfile、webpages_Membership、webpages_OAuthMembership、webpages_Roles、webpages_UsersInRoles

注册用户

        [HttpPost]
        [AllowAnonymous]
        [ValidateAntiForgeryToken]
        public ActionResult Register(RegisterModel model)
        {
            if (ModelState.IsValid)
            {
                // 尝试注册用户
                try
                {
                    //创建用户
                    WebSecurity.CreateUserAndAccount(model.UserName, model.Password);

                    //创建角色
                    if (!Roles.RoleExists("superAdmin"))
                    {Roles.CreateRole("superAdmin"); }

                    if (!Roles.RoleExists("admin"))
                    { Roles.CreateRole("admin"); }

                    if (!Roles.RoleExists("user"))
                    { Roles.CreateRole("user"); }

                    //将用户添加到角色
                    Roles.AddUserToRole(model.UserName, "user");
                    var id = WebSecurity.GetUserId(model.UserName);

                   
                    WebSecurity.Login(model.UserName, model.Password);
                    return RedirectToAction("Index", "Home");
                }
                catch (MembershipCreateUserException e)
                {
                    ModelState.AddModelError("", ErrorCodeToString(e.StatusCode));
                }
            }

            // 如果我们进行到这一步时某个地方出错,则重新显示表单
            return View(model);
        }

这样除了第三张表都有了数据,OAuthMembership表有三个字段Provider、ProviderUserId、UserId,应该和验证方式的配置有关。

原文地址:https://www.cnblogs.com/tgdjw/p/4816531.html