zoukankan      html  css  js  c++  java
  • 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,应该和验证方式的配置有关。

  • 相关阅读:
    绝对有效 IntelliJ IDEA2019.2下载、安装及破解教程
    SpringBoot 打包成war包,部署到tomcat
    Spring Boot 项目实战(一)Maven 多模块项目搭建
    ImportBeanDefinitionRegistrar接口实现bean动态注入
    FactoryBean的实现原理与作用
    ClassPathBeanDefinitionScanner 说明
    InstantiationAwareBeanPostProcessor 分析
    Google Guava Cache 全解析
    二十三、并发编程之深入解析Condition源码
    InheritableThreadLocal详解
  • 原文地址:https://www.cnblogs.com/tgdjw/p/4816531.html
Copyright © 2011-2022 走看看