abp框架注册后登陆

[Route("api/[controller]/[action]")]
    [ApiController]
    public class WeChatController : ControllerBase
    {
        private readonly RepositoryWeChatThepublic _repositoryWeChat;
        private readonly TokenAuthController _token;
        private readonly UserAppService _userApp;

        private readonly UserManager _userManager;
        private readonly RoleManager _roleManager;
        public WeChatController(RepositoryWeChatThepublic repositoryWeChat, TokenAuthController token, UserAppService userApp, UserManager userManager,
            RoleManager roleManager )  
        {
            this._repositoryWeChat = repositoryWeChat;
            this._token = token;
            this._userApp = userApp;

            _userManager = userManager;
            _roleManager = roleManager;
        }
         
        [HttpPost]
        public async Task<AuthenticateResultModel> IdCardLoginAsync(AuthenticateModel model)
        {
            try
            {
                if (string.IsNullOrEmpty(model.UserNameOrEmailAddress)||string.IsNullOrEmpty(model.Password)|| model.UserNameOrEmailAddress=="null"|| model.Password=="null")
                {
                    throw new UserFriendlyException("账号或密码不能为空!");
                }
                if ((!Regex.IsMatch(model.UserNameOrEmailAddress, @"^(^\d{15}$|^\d{18}$|^\d{17}(\d|X|x))$", RegexOptions.IgnoreCase)))
                { 
                    throw new UserFriendlyException("请输入正确的身份证号码!");
                }
                bool Exist = _repositoryWeChat.GetUserExist(model.UserNameOrEmailAddress);
                if (Exist)
                {
                    return await _token.Authenticate(model);
                }
                else
                { 
                    CreateUserDto userDto = new CreateUserDto
                    {
                        UserName = model.UserNameOrEmailAddress,
                        账号 = model.UserNameOrEmailAddress,
                        Name = model.UserNameOrEmailAddress,
                        姓名 = model.UserNameOrEmailAddress,
                        Surname = model.UserNameOrEmailAddress,
                        EmailAddress =model.UserNameOrEmailAddress+"@1.com",
                        PhoneNumber = model.UserNameOrEmailAddress,
                        IsActive =true,
                        RoleNames =new string[] { "受检人" },
                        Password =model.Password,
                        电话 = model.UserNameOrEmailAddress,
                        序号 =model.序号,
                        组织机构名称 ="",
                        组织机构编号 =model.卫生院机构编号,
                        乡镇街道 ="",
                        卫生院名称 =""
                    };
                    UserDto dto= await CreateUserAsync(userDto);
                    if (!string.IsNullOrEmpty(dto.UserName))
                    {
                        return await _token.Authenticate(model);
                    }
                    else
                    {
                        throw new UserFriendlyException("账号不存在,为此人创建账号时失败");
                    }
                }
            }
            catch (Exception e)
            {
                throw new UserFriendlyException(e.Message);
            }
        }
        
        private async Task<UserDto> CreateUserAsync(CreateUserDto userDto)
        {

            var user = ObjectMapper.Map<User>(userDto); 
            user.TenantId = 1;

            await _userManager.InitializeOptionsAsync(1);

            CheckErrors(await _userManager.CreateAsync(user, userDto.Password));

            if (userDto.RoleNames != null)
            {
                CheckErrors(await _userManager.SetRolesAsync(user, userDto.RoleNames));
            }

            return MapToEntityDto(user);
        }
        protected   UserDto MapToEntityDto(User user)
        {
            var roleIds = user.Roles.Select(x => x.RoleId).ToArray();

            var roles = _roleManager.Roles.Where(r => roleIds.Contains(r.Id)).Select(r => r.NormalizedName);

            UserDto userDto = new UserDto {
            UserName=user.UserName,
            序号=user.序号
            }; 
            userDto.RoleNames = roles.ToArray();

            return userDto;
        } 
    }

需要调用框架的这个登录接口

public async Task<AuthenticateResultModel> Authenticate([FromBody] AuthenticateModel model)
        {
            

            var loginResult = await GetLoginResultAsync(
                model.UserNameOrEmailAddress,
                model.Password,
                GetTenancyNameOrNull()
            );

            var accessToken = CreateAccessToken(CreateJwtClaims(loginResult.Identity));

            return new AuthenticateResultModel
            {
                AccessToken = accessToken,
                EncryptedAccessToken = GetEncryptedAccessToken(accessToken),
                ExpireInSeconds = int.MaxValue ,//(int)_configuration.Expiration.TotalSeconds,
                UserId = loginResult.User.Id
            };
        }

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

香煎三文鱼

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值