【橙子日记13】从零开始的毕业设计

更新时间:2021年1月25日

我可从没说过日记是一日一更
有空就更(其实昨天去吃了自助,晚上不想动了。。)

登录模块
做毕业设计,当然是要把自己会的东西放上去,如果像一般的做法,感觉挑战性不是很大,弄,就弄好点!弄就弄大点!淦!
我们登录系统使用:

ASP.NET Core Identity Entity Framework Core.

进行身份验证
宇宙无敌的vs直接管理NuGet包,进行安装
在这里插入图片描述
模型层添加模型
在这里插入图片描述
继承 IdentityUser
在这里插入图片描述
上下文继承:IdentityDbContext
在这里插入图片描述
添加表
接下来,开始更新数据库!
在这里插入图片描述
nuget窗口
出问题了
在这里插入图片描述
问题不大
我们要将tools加入到启动项里才行,其他地方就会出问题
在这里插入图片描述
又炸了,裂开
在这里插入图片描述
原因:运行工具的项目与类不在相同的程序集中
这可以有点难受了
这个问题之前mvc不用考虑,因为都是一个项目,现在是多个项目和在一起的解决方案,我也很搞不懂为什么微软要这样弄
历经多番磨难,终于解决了这个跨项目的问题
在这里插入图片描述
这里添加这么一个配置
继续生成
在这里插入图片描述
输入
在这里插入图片描述
我就服了,炸了
在这里插入图片描述
离谱的是这个是我自己的表,我怎么知道他需要这个?
我真的吐了
我这个不确定是不是那个表重复的原因,我先改一个名字看看
好家伙,也不是
问题真的越来越大了
最离谱的是,我更换一个新数据库便没有这个问题
在这里插入图片描述
其实这样想,目前问题不大,之后可能会出问题,先留个坑,新建一个数据库吧
好家伙,好家伙,直接转移了数据库
启动进行身份注入:
在这里插入图片描述
在这里插入图片描述
启用服务
不过没那么简单,我们需要登入用户的模型
处理登入,注册,退出的代码:
太长了,不好截图。。。

using CC.GraduationProject.Common;
using CC.GraduationProject.Model;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace CC.GraduationProject.API.Controllers
{
    [Route("[controller]/[action]")]
    [ApiController]
    public class AccountController : ControllerBase
    {
        //UserManager: 处理用户相关逻辑,如添加删除,修改密码,添加删除角色等。
        public UserManager<ResultUser> UserManager { get; }
        //SignInManager:处理注册登录相关业务逻辑。
        public SignInManager<ResultUser> SignInManager { get; }
        public AccountController(UserManager<ResultUser> userManager, SignInManager<ResultUser> signInManager)
        {
            UserManager = userManager;
            SignInManager = signInManager;
        }
        //以上代码需要导入相应的命名空间
        //Get:/Account/Login

        //POST: /Account/Login
        //加入[ValidateAntiForgeryToken]过滤特性。该特性表示检测服务器请求是否被篡改。注意:该特性只能用于post请求,get请求无效。
        [HttpPost]
        public async Task<IActionResult> Login()
        {
            var result = await SignInManager.PasswordSignInAsync("测试", "cc123456789.",false, lockoutOnFailure: false);// lockoutOnFailure: false如果登录失败是否锁定用户
            if (result.Succeeded)
            {
                return Content(JsonFactory.Json(message: "登入成功"));
            }
            else
            {
                return Content(JsonFactory.Json(message: "用户名或密码错误"));
            }
        }

        //POST:/Account/Register
        [HttpPost]
        public async Task<IActionResult> Register()
        {
                var user = new ResultUser { UserName = "测试", Email ="454313500@qq.com"};
                var result = await UserManager.CreateAsync(user,"cc123456789.");
                //黄色底纹改为(user)可否?——不可以,创建的用户要带上密码,否则,注册的密码存储不了
                //result实际为 IdentityResult 类型,该类代表了创建账户的结果,其中 
                //Succeeded 属性 代表了操作成功了
                //Errors 属性, 包含了IdentityError对象的集合,identityError对象描述了错误信息,IdentityError有个public string Description { get; set; }属性代表了错误信息描述

                if (result.Succeeded)
                {
                return Content(JsonFactory.Json(message: "注册成功"));
                }
                  string err = "";
                foreach (var error in result.Errors)
                {
                err = err + error.Description;
                }
            return Content(JsonFactory.Json(message: err));
        }
        //POST:/Account/LogOff
        [HttpPost]
        public async Task<ActionResult> LogOff()
        {
            var userName = HttpContext.User.Identity.Name;
            await SignInManager.SignOutAsync();
            return Content(JsonFactory.Json(message: "安全退出成功!"));
        }
    }
}

鬼知道,我在这里进了几个坑,修了多少bug,说多了,都是泪
我们运行一下,先注册一个账号看看
蹦!
好家伙,能一次成,我都不信
看看问题,感觉不是大问题
在这里插入图片描述
意思是说我放的密码,不能有非法符号,也就是那个点,这个好办啊
在这里插入图片描述
直接改
蹦!
看了一下,问题还是这里,密码必须要有一位大写
恶心啊!又蹦了
这次是用户名,只能有字母和数字!
终于成了!
在这里插入图片描述
好家伙
这玩意儿,磨了我一晚上时间!
现在,我只要在需要登入才能访问的控制器里面加入

    [Authorize]

特性,没有登入的用户,将无法进行访问!
基本框架搭建完毕!
比想象的,要复杂一点
前端:
创建了一个登录,注册的路由,其他啥也没动

又是修bug修了一天,有点难受。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值