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

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

  • 编程语言 >

  • 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定位-EC-01G
ASP.NET GPS定位系统介绍(物联网) GPS定位EC-01G模块系列教程源码下载页(物联网) 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、asp.net发布\winform\wpf版本操作流程 18、GPS协议与AT命令流程说明
6、添加SqlServer数据存储(额外内容)
8、添加坐标报表页面(用于遍历地图坐标)
激萌の小宅 小宅博客 GPS定位-EC-01G

文章作者:激萌の小宅

促销:¥0

价格:¥0

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

    有效期

  • 0

    总销量

  • 0

    累计评价

用户注册与登录功能实现

参考视频如下,视频来源《GPS定位系统-MVC-用户注册与登录功能实现》

备注:视频中的部分操作可能会因为Visual Studio的版本差异有所不一样,总体操作流程都是一样的,请自行尝试。视频中采用的是安信可的A9G模块,和当前系列使用的EC-01G模块在AT指令上可能存在差异,这里以博客内容为主,视频主要是讲操作流程。


工程源码下载:GPS定位EC-01G模块系列教程源码下载页(物联网)

IDE环境:Visual Studio 2022


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

        修改流程如下:


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';
        }
    });
});


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


4、运行测试

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

login (1).gif


注册信息如下:

QQ截图20220914203634.jpg


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

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

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

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

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

文章作者:激萌の小宅

促销:¥0

价格:¥0

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

    有效期

  • 0

    总销量

  • 0

    累计评价

用户注册与登录功能实现

参考视频如下,视频来源《GPS定位系统-MVC-用户注册与登录功能实现》

备注:视频中的部分操作可能会因为Visual Studio的版本差异有所不一样,总体操作流程都是一样的,请自行尝试。视频中采用的是安信可的A9G模块,和当前系列使用的EC-01G模块在AT指令上可能存在差异,这里以博客内容为主,视频主要是讲操作流程。


工程源码下载:GPS定位EC-01G模块系列教程源码下载页(物联网)

IDE环境:Visual Studio 2022


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

        修改流程如下:


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';
        }
    });
});


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


4、运行测试

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

login (1).gif


注册信息如下:

QQ截图20220914203634.jpg