• “两学一做”在山西——黄河新闻网 2019-07-13
  • 内地生报读香港高校本科人数持续下跌 2019-07-13
  • 【学习时刻】人民大学王义桅:金砖合作的“自信”与“自觉” 2019-07-12
  • 女子请“私家侦探”被骗3万 警方循线捣毁诈骗团伙 2019-07-11
  • 【学习时刻】北交大马院院长韩振峰:高校思想政治工作必须牢牢把握三大根本问题 2019-07-11
  • 全国“非遗”保护工作先进名单公布 2019-07-01
  • 紫光阁中共中央国家机关工作委员会 2019-06-25
  • 杭州控烟令修改草案拟允许室内设吸烟区,控烟专家:跌破眼镜 2019-06-25
  • 挪用近30万报纸征订款赌博 河南一报社聘用制干部获刑 2019-06-23
  • 2016年,有1145家上市公司大小非减持了3600亿元,还有210名上市公司高管减持了1400亿元。IPO已成了造就成千上万个十亿、百亿富豪的捷径, 2019-06-21
  • 专家“把脉”中国电影市场:提升品质方能逆袭 2019-06-21
  • “善款资助副局长儿子留学”真相须尽快落地 2019-06-19
  • 21岁女护士失联2天后确认遇害 嫌疑人为其前男友 2019-06-19
  • 中国地质公园名录旅行地中国国家地理网 2019-06-13
  • 玄关运用有四大原则 用的好才能财旺挡煞聚财 ——凤凰网房产 2019-06-10
  • 广东11选5预测推荐号码: asp.net core 的用户注册功能——Identity上手

    首先请using这个类库。

     广东十一选5一定牛 www.aavbg.com using Microsoft.AspNetCore.Identity;

    这个类库老牛逼了,首先是包含了一个IdentityUser类。我们可以自己写一个User类继承IdentityUser,这样一来,很多属性我就不用手动建了。如你所见,我的User没有Emai这个字段,但是IdentityUser有这个字段。

    public class User:IdentityUser
        {
            public string Pass { get; set; }
            public string DisplayName { get; set; }
            public DateTime RegisteredTime { get; set; }
        }

    如何把用户发来的数据变成一个User并且存入数据库?

    显然,我他妈得先创建并且连接一个数据库。

    创建数据库如果使用VSStudio是贼容易的一件事,只需要打开'视图菜单',然后点开'SQL Server对象资源管理器'。然后你就看到下面这个图。在上面点右键然后添加一个SQL服务器,然后在服务器上点右键查看属性,可以得到链接字符串。

                                 

    这种简单的操作显然难不住你。下一步把连接字符串放到appsetting.json里面,下面这是一种推荐做法。你当然可以直接粘贴到你的startUp.cs文件中。不过谁会这么做呢?

     

    "ConnectionStrings": {
        "DefaultConnection": "这里就是你的连接字符串"
    }

    下一步要用这个连接字符串连上你的数据库。注意带颜色的字。很JB重要。

            // This method gets called by the runtime. Use this method to add services to the container.
            public void ConfigureServices(IServiceCollection services)
            {
                services.Configure<CookiePolicyOptions>(options =>
                {
                    // This lambda determines whether user consent for non-essential cookies is needed for a given request.
                    options.CheckConsentNeeded = context => true;
                    options.MinimumSameSitePolicy = SameSiteMode.None;
                });
            // 看到了么,下面这行代码用来连接数据库。这是EF提供的方法。
                services.AddDbContext<AppContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
            // 在这里指定你的User类,然后再指定你的数据库。这是Identity类库提供的方法。
                services.AddDefaultIdentity<User>().AddEntityFrameworkStores<AppContext>();
    
                services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
            }
    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
            {
                if (env.IsDevelopment())
                {
                    app.UseDeveloperExceptionPage();
                }
                else
                {
                    app.UseExceptionHandler("/Error");
                    app.UseHsts();
                }
    
                app.UseHttpsRedirection();
                app.UseStaticFiles();
                app.UseCookiePolicy();
           // 这里必须用上。
                app.UseAuthentication();
                app.UseMvc();
            }

    经过上面的配置,controller里面就可以注入很多方法。这下你看起来牛逼多了。

     

    数据库连上了,接下来是真枪实弹的创建一个用户,是时候写controller了。

    建一个随便什么controller吧。我建的是UserController,你可以随你的便。关我屌事呢?

    在controller的构造函数里面注入一个UserManager的类,这个类也是Identity提供的。

    public class UserController : ControllerBase
        {
            private readonly UserManager<User> _userManager;
    
            public UserController(UserManager<User> userManager)
            {
                _userManager = userManager;
            }
    ......

    这个UserManager有贼多的方法,这里我只用一个,createAsync方法。

     // POST: api/User
     [HttpPost]
     public async Task PostAsync([FromBody]User _user)
     {   
         //先创建一个user,不包括密码
    var user = new User { Email = _user.Email , UserName = _user.UserName};
    //将user和密码绑定入库 var result = await _userManager.CreateAsync(user, _user.Pass);
    if (result.Succeeded) { Console.Write("注册成功!"); } }

    用Postman模拟一个请求。你注意到那个FromBody了吗?这个标记可以把发过来的json请求解析成User格式。

     

    这里有一个新手大坑。如果你的 [FromBody] User _user这里写的是[FromBody] string _user, 你就不能用json格式发?;岜ㄊ裁磈son解析错误。

     

    发送请求以后去看看你的数据库吧。已经创建好了一个User对象并且存到了你的数据库里。

     

     这么多字段都是来自IdentityUser类,其中只有那个pass字段是我自己UserClass里面的。

     最后补充【关于Migration】:

    如果你报500错误,说什么表名无效的话。你需要做一下Migration。说白了就是:让数据库的表结构和你代码的Model结构相同。比如你现在有了一个UserModel,可是数据库没有User这个表。那么你能创建成功才他妈有鬼了。

    怎么Migration?

    简单。

    这是创建一个名为“InitialCreate”的Migration
    如果你用的是powershell
    Add-Migration InitialCreate
    
    如果你用的是console
    dotnet ef migrations add InitialCreate
    
    然后更新数据库
    >powershell
    Update-Database
    
    >console
    dotnet ef database update

     

    posted @ 2018-11-14 00:42 不咬人的蚊子 阅读(...) 评论(...) 编辑 收藏
  • “两学一做”在山西——黄河新闻网 2019-07-13
  • 内地生报读香港高校本科人数持续下跌 2019-07-13
  • 【学习时刻】人民大学王义桅:金砖合作的“自信”与“自觉” 2019-07-12
  • 女子请“私家侦探”被骗3万 警方循线捣毁诈骗团伙 2019-07-11
  • 【学习时刻】北交大马院院长韩振峰:高校思想政治工作必须牢牢把握三大根本问题 2019-07-11
  • 全国“非遗”保护工作先进名单公布 2019-07-01
  • 紫光阁中共中央国家机关工作委员会 2019-06-25
  • 杭州控烟令修改草案拟允许室内设吸烟区,控烟专家:跌破眼镜 2019-06-25
  • 挪用近30万报纸征订款赌博 河南一报社聘用制干部获刑 2019-06-23
  • 2016年,有1145家上市公司大小非减持了3600亿元,还有210名上市公司高管减持了1400亿元。IPO已成了造就成千上万个十亿、百亿富豪的捷径, 2019-06-21
  • 专家“把脉”中国电影市场:提升品质方能逆袭 2019-06-21
  • “善款资助副局长儿子留学”真相须尽快落地 2019-06-19
  • 21岁女护士失联2天后确认遇害 嫌疑人为其前男友 2019-06-19
  • 中国地质公园名录旅行地中国国家地理网 2019-06-13
  • 玄关运用有四大原则 用的好才能财旺挡煞聚财 ——凤凰网房产 2019-06-10
  • 新浪彩票图表走势图 福彩东方6十1开奖结果 体彩老11选5开奖结果走势图 福彩7加2中蓝球多少钱 新疆25选7开奖结果是 北京pk10在哪里玩正规 广西快三形势走势图 官方网一尾中特平 华东15选5历史开奖结果查询 36体育彩票走势图 福建体彩36选7走势图 河内5分彩后三走势图 博彩公司权威博彩网评级机构 福建31选7中奖规则 小霸王曾道人百家乐