WPF实战项目十四(API篇):登录注册接口

这篇具有很好参考价值的文章主要介绍了WPF实战项目十四(API篇):登录注册接口。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、新建UserDto.cs

public class UserDto : BaseDto
    {
		private string userName;
		/// <summary>
		/// 用户名
		/// </summary>
		public string UserName
		{
			get { return userName; }
			set { userName = value;OnPropertyChanged(); }
		}
		private string account;
		/// <summary>
		/// 账户
		/// </summary>
		public string Account
		{
			get { return account; }
			set { account = value; OnPropertyChanged(); }
		}
		private string password;
		/// <summary>
		/// 密码
		/// </summary>
		public string Password
		{
			get { return password; }
			set { password = value; OnPropertyChanged(); }
		}

	}

2、新增ILoginService接口

   public interface ILoginService
    {
        Task<ApiResponse> LoginAsync(string Account, string Password);
        Task<ApiResponse> RegisterAsync(UserDto userDto);

    }

3、实现LoginService接口

public class LoginService : ILoginService
    {
        private readonly IUnitOfWork unitOfWork;
        private readonly IMapper mapper;
        public LoginService(IUnitOfWork unitOfWork, IMapper mapper)
        {
            this.unitOfWork = unitOfWork;
            this.mapper = mapper;
        }
        /// <summary>
        /// 登录
        /// </summary>
        /// <param name="Account"></param>
        /// <param name="Password"></param>
        /// <returns></returns>
        public async Task<ApiResponse> LoginAsync(string Account, string Password)
        {
            try
            {
                var repository = unitOfWork.GetRepository<User>();
                var model = await repository.GetFirstOrDefaultAsync(predicate: t => t.Account.Equals(Account) && t.PassWord.Equals(Password));
                if(model == null)
                {
                    return new ApiResponse(false, "用户名或密码错误!");
                }
                else
                {
                    return new ApiResponse(true, model);
                }
            }
            catch (Exception ex)
            {
                return new ApiResponse(false, ex.Message);
            }
        }
        /// <summary>
        /// 注册
        /// </summary>
        /// <param name="userDto"></param>
        /// <returns></returns>
        /// <exception cref="NotImplementedException"></exception>
        public async Task<ApiResponse> RegisterAsync(UserDto userDto)
        {
            try
            {
                var user = mapper.Map<User>(userDto);
                var repository = unitOfWork.GetRepository<User>();
                var userModel = await repository.GetFirstOrDefaultAsync(predicate: t => t.Account.Equals(user.Account));
                if(userModel != null)
                {
                    return new ApiResponse(false, $"当前账号{user.Account}已存在,请重新注册!");
                }
                else
                {
                    user.CreateDate = DateTime.Now;
                    await repository.InsertAsync(user);
                    if(await unitOfWork.SaveChangesAsync() > 0)
                    {
                        return new ApiResponse(true, user);
                    }
                    else
                    {
                        return new ApiResponse(false, "注册失败!");
                    }
                }
            }
            catch (Exception ex)
            {
                return new ApiResponse(false, ex.Message);
            }
        }
    }

4、新增登录控制器LoginController

/// <summary>
    /// 登录
    /// </summary>
    public class LoginController : BaseApiController
    {
        private readonly ILoginService loginService;

        public LoginController(ILoginService loginService)
        {
            this.loginService = loginService;
        }

        [HttpGet]
        public async Task<ApiResponse> Login(string Account, string PassWord)
        {
            return await loginService.LoginAsync(Account, PassWord);
        }
        [HttpPost]
        public async Task<ApiResponse> Register([FromBody] UserDto userDto)
        {
            return await loginService.RegisterAsync(userDto);
        }
    }

5、添加AutoMapper映射关系

  CreateMap<User, UserDto>().ReverseMap();

6、在program.cs里面添加服务

builder.Services.AddTransient<ILoginService, LoginService>();

7、F5运行项目

WPF实战项目十四(API篇):登录注册接口,WPF,.netcore,webapi,.netcoreWPF实战项目十四(API篇):登录注册接口,WPF,.netcore,webapi,.netcoreWPF实战项目十四(API篇):登录注册接口,WPF,.netcore,webapi,.netcoreWPF实战项目十四(API篇):登录注册接口,WPF,.netcore,webapi,.netcoreWPF实战项目十四(API篇):登录注册接口,WPF,.netcore,webapi,.netcoreWPF实战项目十四(API篇):登录注册接口,WPF,.netcore,webapi,.netcore文章来源地址https://www.toymoban.com/news/detail-693098.html

到了这里,关于WPF实战项目十四(API篇):登录注册接口的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • WPF实战学习笔记30-登录、注册服务添加

    添加注册数据类型 添加注册UI 修改bug UserDto的UserName更改为可null类型 Resgiter 添加加密方法 修改控制器 添加注册数据类型 添加文件MyToDo.Share.Models.ResgiterUserDto.cs 添加注册UI 修改文件:Mytodo.Views.LoginView.xaml 添加注册、登录、退出等功能实现以及功能的字段 修改bug UserDto的User

    2024年02月14日
    浏览(25)
  • WPF实战项目十二(API篇):配置AutoMapper

    1、新建类库WPFProjectShared,在类库下新建文件夹Dtos,新建BaseDto.cs,继承INotifyPropertyChanged,实现通知更新。  2、WPFProjectAPI添加引用WPFProjectShared  3、新建待办事项传输实体TodoDto.cs,继承BaseDto.cs 4、在api层引入AutoMapper,并新建文件夹Extensions,新建帮助类AutoMapperProFile.cs,继承

    2024年02月11日
    浏览(27)
  • WPF实战项目十(API篇):引入工作单元UnitOfWork

    1、通过github地址:https://github.com/arch/UnitOfWork,下载UnitOfWork的代码,将工作单元部分的代码引用到自己的项目,新增UnitOfWork文件夹。 2、在UnitOfWork文件夹下引用UnitOfWork下的IPagedList.cs、PagedList.cs类,WPFProjectAPI项目引用WPFProjectShared项目。 3、然后在program.cs下添加UnitOfWork的服务

    2024年02月16日
    浏览(37)
  • Jmeter验证码图片识别注册接口压力测试实战_压测时,登录需要传图形验证码

    先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7 深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前! 因此收集整理了一份《2024年最新软件测试全套学习资料》

    2024年04月22日
    浏览(41)
  • 【免费开放源码】审批类小程序项目实战(注册登录页面)

    第一节:什么构成了微信小程序、创建一个自己的小程序 第二节:微信开发者工具使用教程 第三节:深入了解并掌握小程序核心组件 第四节:初始化云函数和数据库 第五节:云数据库的增删改查 第六节:项目大纲以及制作登录、注册页面 第七节:制作活动申请页面 第八节

    2024年02月16日
    浏览(31)
  • 【项目实战】登录与注册业务的实现(前端+后端+数据库)

             本示例基于Vue.js和mint UI实现。 目录 一、数据库的创建 二、后端接口与数据库的连接 三、前端代码实现 1.注册页相关代码 2.注册页效果 3.登录页相关代码 4.登录页效果 四、注册登录演示 五、项目文件结构         此处以 Navicat 软件进行创建,新建数据库r

    2023年04月08日
    浏览(45)
  • UniAPP社区论坛项目实战--社区服务 API 接口文档

    服务器请求地址:http://ts.lagou.uieee.com 客户端访问统一接口规则 : /api/v2/ gitHub 完整 API 接口服务文档查阅:https://github.com/slimkit/slimkit.github.io/tree/gh-pages/docs 体验版前台地址:http://ts.lagou.uieee.com/feeds 后台管理系统地址: http://ts.lagou.uieee.com/admin 体验账号:root 登陆密码:roo

    2024年01月23日
    浏览(40)
  • Vue项目实战——【基于 Vue3.x + Vant UI】实现一个多功能记账本(登录注册页面,验证码)

    系列内容 参考链接 基于 Vue3.x + Vant UI 的多功能记账本(一) 项目演示,涉及知识点 基于 Vue3.x + Vant UI 的多功能记账本(二) 搭建开发环境 基于 Vue3.x + Vant UI 的多功能记账本(三) 开发导航栏及公共部分 项目演示 Vue3 + Vant UI_多功能记账本 1、登录注册页面 页面设计,页面

    2024年02月03日
    浏览(43)
  • 项目实战-RuoYi后台管理系统-登录功能Postman接口自动化脚本分享

        先来回顾一下之前写过的关于RuoYi后台管理系统项目实战相关的几篇文章: 测试项目实战----RuoYi后台管理系统 项目实战-RuoYi后台管理系统-用户管理测试点设计 项目实战-RuoYi后台管理系统-登录相关接口分析 Docker搭建webdis用于提供api查询redis中的数据 项目实战-RuoYi后台管

    2023年04月20日
    浏览(34)
  • 基于.NetCore开发博客项目 StarBlog - (27) 使用JWT保护接口

    这是StarBlog系列在2023年的第二篇更新😂 这几个月都在忙,更新变得很不勤快,但是拖着不更新我的心里更慌,很久没写,要开头就变得很难😑 说回正题,之前的文章里,我们已经把博客关键的接口都开发完成了,但还少了一个最关键的「认证授权」,少了这东西,网站就跟

    2024年02月02日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包