您好,
会员登录 快速注册
退出 ( 条未读消息)
关于本站 意见反馈 首页

公告:小宅博客网可以开发票了,需要发票的,去群里找群主哈!!
全部文章分类
  • 人工智能 >

  • 编程语言 >

  • WPF系列 >

  • ASP.NET系列 >

  • Linux >

  • 数据库 >

  • 嵌入式 >

  • WEB技术 >

  • PLC系列 >

  • 微服务与框架 >

  • 小宅DIY >

  • 学习资料 >

OpenCv基础 ANN车牌识别 yolov5车牌识别 指针式仪表识别 ROS系列 YOLO Halcon Detectron2 昇腾AI ChatGPT在线体验 英伟达JETSON ChatGLM ChatTTS FunASR 地平线 ByteTrack 魔搭社区 LangChain
C C# C++ Python Java Go
WPF
ASP.NET小功能 GPS定位系统-MVC GPS定位系统-VUE ASP.NET WebRTC
Linux Linux内核 Shell MakeFile
MySql SqlServer Oracle
STM8 STM32 51单片机
VUE入门 HTML JavaScript CSS layui镜像网站 ElementUi中文官网 element-plus 图标 Vue - Ant Design官方
三菱 欧姆龙 西门子 施耐德 松下 台达
IOTSharp IOTGateway ABP FRAMEWORK Docker
亚克力音响 编程仙途:智驭万法
面试题与技巧 Python入门技能树 微软C#教程
首页 编程之美 工具下载 全国就业 流量地图 文心一言
GPS定位系统-MVC
.NET6.0 GPS定位系统介绍(物联网) 系列源码下载 1、新建.net core web工程 2、添加自定义登录页面 3、添加百度地图页面 4、添加后台日志系统 5、添加mysql数据存储 6、添加SqlServer数据存储(额外内容) 7、用户注册与登录功能实现 8、添加坐标报表页面(用于遍历地图坐标) 9、前后端数据交互与报表数据展示 10、报表数据的编辑与修改 11、用户登录与退出 12、自定义GPRS通讯协议 13、添加TCP通讯功能(接收) 14、添加TCP通讯功能(发送) 15、模拟GPRS数据通讯 16、设备链接状态检测与提示 17、新建Windows Server虚拟机 18、服务器IIS运行环境配置 19、服务器.net程序发布 20、关于如何配置.net3.1框架 21、关于如何配置.net5.0框架 22、WinForm版地图上位机(带数据库和TCP功能) 23、WPF版地图上位机(带数据库和TCP功能) 24、公网映射与外网通讯 25、GPS协议与AT命令流程说明 26、GPRS协议与AT命令流程说明 27、STM32、A9G硬件连接图 28、STM32开发环境搭建 29、STM32 GPS/GPRS通讯功能实现 30、STM32 GPS定位数据上报服务器 31、室外最终效果演示 32、结束语
6、添加SqlServer数据存储(额外内容)
8、添加坐标报表页面(用于遍历地图坐标)
激萌の小宅 小宅博客网 GPS定位系统-MVC

文章作者:激萌の小宅

促销:¥0

价格:¥0

配送方式: 购买后立即生效(如购买异常,请联系站长)
付款之后一定要等待自动跳转结束,否则购买可能会失败
  • 0 天

    有效期

  • 0

    总销量

  • 0

    累计评价

用户注册与登录功能实现 - (第七讲)

视频讲解如下:


        工程源码下载:GPS定位系统系列教程源码下载


        用户注册与登录主要涉及到前后端的数据交互、用户数据如何保存到数据库中,等一些常规操作。

        修改流程如下:


1、添加HttpContext支持

        用户登录功能为了确保每个网页能够独立记录当前的登录用户,我们需要添加HttpContext支持,用于保存当前登录的用户信息。在.net6.0中,修改Program.cs文件

        添加builder代码,这段代码可以直接加到“builder.Services.AddRazorPages();”的后面。

// 添加分布式缓存
builder.Services.AddDistributedMemoryCache();
// 添加应用程序会话状态所需的服务。在web访问时,确保变量信息不丢失
builder.Services.AddSession();

        添加app代码,这段代码可以直接加到“app.MapRazorPages();”的后面。

app.UseCookiePolicy();
app.UseSession();


2、修改Login控制器

        主要是需要在LoginController.cs控制器中添加注册、登录、退出三个功能,添加内容如下:

using DbEntity.Tables;
using Microsoft.AspNetCore.Mvc;
using WebApplicationGPS.comm;

namespace WebApplicationGPS.Controllers
{
    public class LoginController : Controller
    {
        public IActionResult Index()
        {
            return View();
        }

        /// <summary>
        /// 登录
        /// </summary>
        /// <param name="userName"></param>
        /// <param name="password"></param>
        /// <returns></returns>
        public ActionResult SubmitLogin(string userName, string password)
        {
            AjaxResult res = new AjaxResult() { Success = false };
            try
            {
                // 确保登录信息不能为空
                if (string.IsNullOrEmpty(userName) || string.IsNullOrEmpty(password))
                    throw new Exception($"用户名或密码不能为空");
                // 确保登录的用户存在
                User list = Res.MyDb.Tb_User.FirstOrDefault(x => x.Account == userName);
                if (list == null) throw new Exception($"该用户不存在");
                // 确保登录的用户密码正确
                if (list.Password != password) throw new Exception($"密码输入错误");
                // 确保登录的用户未被注销,注销时我们不删除用户信息,确保该信息不会被二次注册
                if (list.DeleteFlag == 1) throw new Exception($"该账号已被注销");
                else
                {
                    // 将登录的用户信息保存在缓存,供全局调用
                    HttpContext.Session.Remove("user");
                    HttpContext.Session.SetString("user", list.ToJson());
                    res.Success = true;
                }
                Res.MyDb.SaveChanges();
            }
            catch (Exception e)
            {
                res.ErrorCode = e.Message;
            }
            return Content(res.ToJson());
        }

        /// <summary>
        /// 注册
        /// </summary>
        /// <param name="userName"></param>
        /// <param name="password"></param>
        /// <returns></returns>
        public ActionResult NewUser(string userName, string userText, string password)
        {
            AjaxResult res = new AjaxResult() { Success = false };
            try
            {
                // 注册信息检测,确保信息符合注册要求
                if (userName == null) userName = "";
                if (userText == null) userText = "";
                if (password == null) password = "";
                userName = userName.Trim();
                userText = userText.Trim();
                password = password.Trim();
                if (userName == "" || string.IsNullOrEmpty(userName.Trim())) throw new Exception("用户名不能为空");
                if (userText == "" || string.IsNullOrEmpty(userText.Trim())) throw new Exception("昵称不能为空");
                if (password == "" || string.IsNullOrEmpty(password.Trim())) throw new Exception("密码不能为空");

                // 将用户名全部设置成小写进行检测,确保注册信息的唯一性
                User u1 = Res.MyDb.Tb_User.FirstOrDefault(x => x.Account.Trim().ToLower() == userName.ToLower());
                if (u1 != null) throw new Exception("用户名已存在");
                if (userName.Length > 20) throw new Exception("用户名太长了");
                User u2 = Res.MyDb.Tb_User.FirstOrDefault(x => x.NickName.Trim().ToLower() == userText.ToLower());
                if (u2 != null) throw new Exception("昵称已存在");
                if (userText.Length > 8) throw new Exception("昵称太长了");

                // 将注册信息保存到数据库
                User NewUser = new User()
                {
                    CreateTime = DateTime.Now,
                    UpdateTime = DateTime.Now,
                    UserId = Guid.NewGuid().ToString(),
                    Account = userName,
                    Password = password,
                    NickName = userText,
                    Level = 1,
                };
                Res.MyDb.Tb_User.Add(NewUser);
                Res.MyDb.SaveChanges();
                res.Success = true;
            }
            catch (Exception e)
            {
                res.ErrorCode = e.Message;
            }
            return Content(res.ToJson());
        }

        /// <summary>
        /// 退出
        /// </summary>
        /// <returns></returns>
        public ActionResult OutUser()
        {
            AjaxResult res = new AjaxResult() { Success = false };
            try
            {
                // 退出数据库,删除缓存中的登录信息
                HttpContext.Session.Remove("user");
                res.Success = true;
            }
            catch { }
            return Content(res.ToJson());
        }
    }
}


LoginController.cs控制器中需要用到两个类文件(具体内容请参考工程源代码):

comm/AjaxResult.cs:js进行请求时,返回的数据结构

comm/module.cs:一些用到的数据转换方法都放这里,目前只有个对象转Json的功能。


3、添加POST请求

最后是在login.js中,实现我们的post请求,请求控制器中的注册和登录接口,代码如下:

$('#logincheck').click(function () {
    var u = $("#username");
    var t = $("#usertext");
    var p1 = $("#userpwd1");
    var p2 = $("#userpwd2");
    if (p1.val() == p2.val()) {
        $.post('Login/NewUser', { userName: u.val(), userText: t.val(), password: p1.val() }, function (resJson) {
            var res = JSON.parse(resJson);
            if (!res.Success) {
                layer.alert(res.ErrorCode, { title: '注册失败', icon: 5 });
            }
            else {
                layer.alert('注册成功!', {
                    title: '成功',
                    icon: 1,
                    yes: function () {
                        window.location = '/Login';
                    }
                });
            }
        });
    }
    else {
        var index = layer.alert('密码不一致', {
            title: '注册失败',
            icon: 5,
            yes: function () {
                layer.close(index);
                return;
            }
        });
    }
});

$('#logincheck2').click(function () {
    var u = $("#user_name");
    var p = $("#userpwd");
    $.post('Login/SubmitLogin', { userName: u.val(), password: p.val() }, function (resJson) {
        var res = JSON.parse(resJson);
        if (!res.Success) {
            layer.alert(res.ErrorCode, { title: '登录失败', icon: 5 });
        }
        else {
            window.location = 'Home';
        }
    });
});


注意:前面注册页面有个邮箱一栏,我这里删除了,简化一下注册信息。


3、运行测试

到这里,我们的修改就完成了,运行我们的程序进行注册和登录:

login (1).gif


注册信息如下:

QQ截图20220914203634.jpg

6、添加SqlServer数据存储(额外内容)
8、添加坐标报表页面(用于遍历地图坐标)

友情链接: CSDN激萌の小宅 95知识库 自考题库 罗分明个人网络博客 精益编程leanboot

小宅博客  www.bilibili996.com All Rights Reserved. 备案号: 闽ICP备2024034575号

网站经营许可证  福建省福州市 Copyright©2021-2025 版权所有

小宅博客
首页 智能家居 地图定位
公告:小宅博客网可以开发票了,需要发票的,去群里找群主哈!!

文章作者:激萌の小宅

促销:¥0

价格:¥0

配送方式: 购买后立即生效(如购买异常,请联系站长)
付款之后一定要等待自动跳转结束,否则购买可能会失败
  • 0 天

    有效期

  • 0

    总销量

  • 0

    累计评价

用户注册与登录功能实现 - (第七讲)

视频讲解如下:


        工程源码下载:GPS定位系统系列教程源码下载


        用户注册与登录主要涉及到前后端的数据交互、用户数据如何保存到数据库中,等一些常规操作。

        修改流程如下:


1、添加HttpContext支持

        用户登录功能为了确保每个网页能够独立记录当前的登录用户,我们需要添加HttpContext支持,用于保存当前登录的用户信息。在.net6.0中,修改Program.cs文件

        添加builder代码,这段代码可以直接加到“builder.Services.AddRazorPages();”的后面。

// 添加分布式缓存
builder.Services.AddDistributedMemoryCache();
// 添加应用程序会话状态所需的服务。在web访问时,确保变量信息不丢失
builder.Services.AddSession();

        添加app代码,这段代码可以直接加到“app.MapRazorPages();”的后面。

app.UseCookiePolicy();
app.UseSession();


2、修改Login控制器

        主要是需要在LoginController.cs控制器中添加注册、登录、退出三个功能,添加内容如下:

using DbEntity.Tables;
using Microsoft.AspNetCore.Mvc;
using WebApplicationGPS.comm;

namespace WebApplicationGPS.Controllers
{
    public class LoginController : Controller
    {
        public IActionResult Index()
        {
            return View();
        }

        /// <summary>
        /// 登录
        /// </summary>
        /// <param name="userName"></param>
        /// <param name="password"></param>
        /// <returns></returns>
        public ActionResult SubmitLogin(string userName, string password)
        {
            AjaxResult res = new AjaxResult() { Success = false };
            try
            {
                // 确保登录信息不能为空
                if (string.IsNullOrEmpty(userName) || string.IsNullOrEmpty(password))
                    throw new Exception($"用户名或密码不能为空");
                // 确保登录的用户存在
                User list = Res.MyDb.Tb_User.FirstOrDefault(x => x.Account == userName);
                if (list == null) throw new Exception($"该用户不存在");
                // 确保登录的用户密码正确
                if (list.Password != password) throw new Exception($"密码输入错误");
                // 确保登录的用户未被注销,注销时我们不删除用户信息,确保该信息不会被二次注册
                if (list.DeleteFlag == 1) throw new Exception($"该账号已被注销");
                else
                {
                    // 将登录的用户信息保存在缓存,供全局调用
                    HttpContext.Session.Remove("user");
                    HttpContext.Session.SetString("user", list.ToJson());
                    res.Success = true;
                }
                Res.MyDb.SaveChanges();
            }
            catch (Exception e)
            {
                res.ErrorCode = e.Message;
            }
            return Content(res.ToJson());
        }

        /// <summary>
        /// 注册
        /// </summary>
        /// <param name="userName"></param>
        /// <param name="password"></param>
        /// <returns></returns>
        public ActionResult NewUser(string userName, string userText, string password)
        {
            AjaxResult res = new AjaxResult() { Success = false };
            try
            {
                // 注册信息检测,确保信息符合注册要求
                if (userName == null) userName = "";
                if (userText == null) userText = "";
                if (password == null) password = "";
                userName = userName.Trim();
                userText = userText.Trim();
                password = password.Trim();
                if (userName == "" || string.IsNullOrEmpty(userName.Trim())) throw new Exception("用户名不能为空");
                if (userText == "" || string.IsNullOrEmpty(userText.Trim())) throw new Exception("昵称不能为空");
                if (password == "" || string.IsNullOrEmpty(password.Trim())) throw new Exception("密码不能为空");

                // 将用户名全部设置成小写进行检测,确保注册信息的唯一性
                User u1 = Res.MyDb.Tb_User.FirstOrDefault(x => x.Account.Trim().ToLower() == userName.ToLower());
                if (u1 != null) throw new Exception("用户名已存在");
                if (userName.Length > 20) throw new Exception("用户名太长了");
                User u2 = Res.MyDb.Tb_User.FirstOrDefault(x => x.NickName.Trim().ToLower() == userText.ToLower());
                if (u2 != null) throw new Exception("昵称已存在");
                if (userText.Length > 8) throw new Exception("昵称太长了");

                // 将注册信息保存到数据库
                User NewUser = new User()
                {
                    CreateTime = DateTime.Now,
                    UpdateTime = DateTime.Now,
                    UserId = Guid.NewGuid().ToString(),
                    Account = userName,
                    Password = password,
                    NickName = userText,
                    Level = 1,
                };
                Res.MyDb.Tb_User.Add(NewUser);
                Res.MyDb.SaveChanges();
                res.Success = true;
            }
            catch (Exception e)
            {
                res.ErrorCode = e.Message;
            }
            return Content(res.ToJson());
        }

        /// <summary>
        /// 退出
        /// </summary>
        /// <returns></returns>
        public ActionResult OutUser()
        {
            AjaxResult res = new AjaxResult() { Success = false };
            try
            {
                // 退出数据库,删除缓存中的登录信息
                HttpContext.Session.Remove("user");
                res.Success = true;
            }
            catch { }
            return Content(res.ToJson());
        }
    }
}


LoginController.cs控制器中需要用到两个类文件(具体内容请参考工程源代码):

comm/AjaxResult.cs:js进行请求时,返回的数据结构

comm/module.cs:一些用到的数据转换方法都放这里,目前只有个对象转Json的功能。


3、添加POST请求

最后是在login.js中,实现我们的post请求,请求控制器中的注册和登录接口,代码如下:

$('#logincheck').click(function () {
    var u = $("#username");
    var t = $("#usertext");
    var p1 = $("#userpwd1");
    var p2 = $("#userpwd2");
    if (p1.val() == p2.val()) {
        $.post('Login/NewUser', { userName: u.val(), userText: t.val(), password: p1.val() }, function (resJson) {
            var res = JSON.parse(resJson);
            if (!res.Success) {
                layer.alert(res.ErrorCode, { title: '注册失败', icon: 5 });
            }
            else {
                layer.alert('注册成功!', {
                    title: '成功',
                    icon: 1,
                    yes: function () {
                        window.location = '/Login';
                    }
                });
            }
        });
    }
    else {
        var index = layer.alert('密码不一致', {
            title: '注册失败',
            icon: 5,
            yes: function () {
                layer.close(index);
                return;
            }
        });
    }
});

$('#logincheck2').click(function () {
    var u = $("#user_name");
    var p = $("#userpwd");
    $.post('Login/SubmitLogin', { userName: u.val(), password: p.val() }, function (resJson) {
        var res = JSON.parse(resJson);
        if (!res.Success) {
            layer.alert(res.ErrorCode, { title: '登录失败', icon: 5 });
        }
        else {
            window.location = 'Home';
        }
    });
});


注意:前面注册页面有个邮箱一栏,我这里删除了,简化一下注册信息。


3、运行测试

到这里,我们的修改就完成了,运行我们的程序进行注册和登录:

login (1).gif


注册信息如下:

QQ截图20220914203634.jpg