WPF实战学习笔记13-创建注册登录接口

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

创建注册登录接口

添加文件

创建文件

+ MyToDo.Api

​ ./Controllers/LoginController.cs

​ ./Service/ILoginService.cs

​ ./Service/LoginService.cs

  • MyToDo.Share

    ./Dtos/UserDto.cs文章来源地址https://www.toymoban.com/news/detail-614379.html

LoginController.cs
using Microsoft.AspNetCore.Mvc;
using MyToDo.Api.Context;
using MyToDo.Api.Service;
using MyToDo.Share.Dtos;
using MyToDo.Share.Parameters;

namespace MyToDo.Api.Controllers
{
    [ApiController]
    [Route("api/[controller]/[action]")]
    public class LoginController : ControllerBase
    {

        private readonly ILoginService service;

        public LoginController(ILoginService tService)
        {
            this.service = tService;
        }

        [HttpGet]
        public async Task<ApiReponse> LoginAsync(string Account, string PassWord) => await service.LoginAsync(Account,PassWord);

        [HttpPost]
        public async Task<ApiReponse> Resgiter([FromBody] UserDto param) => await service.Resgiter(param);
    }
}

ILoginService.cs
using MyToDo.Share.Dtos;

namespace MyToDo.Api.Service
{
    public interface ILoginService
    {
        /// <summary>
        /// 登录
        /// </summary>
        /// <param name="Account">登录名</param>
        /// <param name="PassWord">登录密码</param>
        /// <returns></returns>
        Task<ApiReponse> LoginAsync(string Account,string PassWord);

        /// <summary>
        /// 注册
        /// </summary>
        /// <returns></returns>
        Task<ApiReponse> Resgiter(UserDto user);
    }
}

LoginService.cs
using Arch.EntityFrameworkCore.UnitOfWork;
using AutoMapper;
using MyToDo.Api.Context;
using MyToDo.Share.Dtos;
using System.Diagnostics.Eventing.Reader;

namespace MyToDo.Api.Service
{
    public class LoginService : ILoginService
    {
        private readonly IUnitOfWork work;
        private readonly IMapper mapper;

        public LoginService(IUnitOfWork work, IMapper mapper)
        {
            this.work = work;
            this.mapper = mapper;
        }

        public async Task<ApiReponse> LoginAsync(string Account, string PassWord)
        {
            try
            {
                if(Account==null || PassWord==null)
                    return new ApiReponse("账号或密码为空", false);

                var model = await work.GetRepository<User>().GetFirstOrDefaultAsync(predicate: x => (x.Account.Equals(Account)) && (x.Password.Equals(PassWord)));

                if(model == null)
                {
                    return new ApiReponse("账号或密码错误",false); 
                }

                return new ApiReponse(true,model);
            }
            catch (Exception ex)
            {

                return new ApiReponse("登录失败", false); ;
            }
        }

        public async Task<ApiReponse> Resgiter(UserDto user)
        {
            try
            {
                var model = mapper.Map<User>(user);

                var repository = work.GetRepository<User>();
                //.GetFirstOrDefaultAsync(predicate: x => x.Account.Equals(model.Account));

                var usermodel = await repository.GetFirstOrDefaultAsync(predicate: x => x.Account.Equals(model.Account));

                if(usermodel != null) 
                    return new ApiReponse("当前账户已存在",false);  
               
                model.CreateDate = DateTime.Now;

                await repository.InsertAsync(model);

                if(await work.SaveChangesAsync()>0)
                    return new ApiReponse(true, model);

                return new ApiReponse("注册失败,请稍后重试", false);

            }
            catch (Exception ex)
            {
                return new ApiReponse($"注册失败.{ex.Message}", false);
            }
        }
    }
}

UserDto.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MyToDo.Share.Dtos
{
    public class UserDto:BaseDto
    {
		private string? userName;
		private string? passWord;
		private string? account;

		/// <summary>
		/// 账户
		/// </summary>
		public string? Account
		{
			get { return account; }
			set { account = value; OnPropertyChanged(); }
		}

		/// <summary>
		/// 密码
		/// </summary>
		public string PassWord
		{
			get { return passWord; }
			set { passWord = value; OnPropertyChanged(); }
		}

		/// <summary>
		/// 用户名
		/// </summary>
		public string UserName
		{
			get { return userName; }
			set { userName = value; OnPropertyChanged(); }
		}

	}
}

依赖注入

Program.cs 添加
.AddCustomRepository<User, UserRepository>();
AutoMapperProfilec.s 添加
builder.Services.AddTransient<ILoginService, LoginService>();

到了这里,关于WPF实战学习笔记13-创建注册登录接口的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • WPF实战学习笔记28-登录界面

    添加登录界面UI 添加文件loginview.xaml。注意本界面使用的是md内的图标。没有登录界面的图片 添加对应的viewmodel 添加文件Mytodo.ViewModels.LoginViewModel.cs 注册视图 添加启动 修改文件:App.xmal.cs

    2024年02月14日
    浏览(38)
  • WPF实战学习笔记29-登录数据绑定,编写登录服务

    添加登录绑定字段、命令、方法 修改对象:Mytodo.ViewModels.ViewModels 添加密码依赖对象行为 添加文件:Mytodo.Extensions.PassWordExtensions ### 登录UI添加密码行为 修改文件:Mytodo.Views.LoginView.xmal 添加命名空间,略 修改passbox。 添加加密方法,并使用 添加文件:MyToDo.Share.StringE

    2024年02月15日
    浏览(36)
  • WPF实战学习笔记31-登录界面全局通知

    UI添加消息聚合器 注册提示消息 文件:Mytodo.Views.LoginView.cs构造函数添加内容 在需要的地方添加提示消息 修改文件:Mytodo.ViewModels.LoginViewModel.cs

    2024年02月14日
    浏览(41)
  • WPF实战学习笔记08-创建数据库

    创建文件夹 ./Context 创建文件 ./Context/BaseEnity.cs ./Context/Memo.cs ./Context/MyTodoContext.cs ./Context/Todo.cs ./Context/User.cs 创建数据对象 ./Context/BaseEnity.cs ./Context/Memo.cs ./Context/MyTodoContext.cs 创建数据库DbSet ./Context/Todo.cs ./Context/User.cs 添加nuget包 Microsoft.EntityFrameworkCore.Design Shared design-time co

    2024年02月16日
    浏览(43)
  • WPF实战学习笔记15-使用Memo类的GetAll接口

    总体参照上节即可 创建MemoService接口 新建文件Mytodo/Service/IMemoService.cs 实现MemoService接口 新建文件Mytodo/Service/MemoService.cs 依赖注入 修改 文件:Mytodo/App.xaml.cs 部分修改为: 修改ViewModel 参照上节

    2024年02月15日
    浏览(36)
  • WPF实战学习笔记27-全局通知

    新建消息事件 添加文件:Mytodo.Common.Events.MessageModel.cs 注册、发送提示消息 UI增加Snackbar 修改文件:Mytodo.Views.MainView.xaml 注册消息 修改文件:Mytodo.Views.MainViewcs 构造函数添加 要注意的是,我们要发送的是文本,所以,this.skbar.MessageQueue.Enqueue函数内发送的是文本。 在需要的地

    2024年02月15日
    浏览(39)
  • WPF实战学习笔记26-首页导航

    修改UI,添加单击行为,并绑定导航命令 修改文件:Mytodo.Views.IndexView.xaml ,在导航梯形添加内容 添加导航命令,并初始化 修改文件:indexviewmodel.cs 添加导航区域变量,并初始化 修改文件:indexviewmodel.cs 添加导航方法 TaskBars添加对应的导航区域 修改OnNavigate方法 当为“已完成

    2024年02月15日
    浏览(33)
  • WPF实战学习笔记16-数据加载

    新建Update事件,增加Prism事件列表 新建文件Mytodo/Common/Events/UpdateLoadingEvent.cs 新建含加载窗体基类 新建文件Mytodo/ViewModels/NavigationViewModel.cs 建立数据加载窗体扩展方法 新建文件Mytodo/Extensions/DialogExtension.cs 主窗口命名 修改文件Mytodo/Extensions/DialogExtension.cs 主窗口订阅消息 修改文

    2024年02月15日
    浏览(39)
  • WPF实战学习笔记25-首页汇总

    注意:本实现与视频不一致。本实现中单独做了汇总接口,而视频中则合并到国todo接口当中了。 添加汇总webapi接口 添加汇总数据客户端接口 总数据客户端接口对接3 首页数据模型 添加数据汇总字段类 新建文件MyToDo.Share.Models.SummaryDto 添加汇总webapi接口 添加汇总接口 添加文

    2024年02月15日
    浏览(35)
  • WPF实战学习笔记04-菜单导航

    添加文件与文件夹 添加文件夹 ​ ./Extensions 添加文件 类型:用户控件 ./Views/IndexView.xaml ./Views/MemoView.xaml ./Views/TodoView.xaml ./Views/SettingsView.xaml ./ViewModels/IndexViewModel.cs ./ViewModels/IndexViewModel.cs ./ViewModels/IndexViewModel.cs ./ViewModels/IndexViewModel.cs ./Extensions/PrismManager.cs 建立View与Vie

    2024年02月16日
    浏览(71)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包