尝试实现登录时出现 ArgumentException(ASP.NET Core 项目)

Posted

技术标签:

【中文标题】尝试实现登录时出现 ArgumentException(ASP.NET Core 项目)【英文标题】:ArgumentException when trying to implement a Login (ASP.NET Core Project) 【发布时间】:2021-04-25 21:38:03 【问题描述】:

我尝试在我的 ASP.NET Core Web 应用程序中实现登录,它使用来自 SQL 数据库的数据来验证登录。 我创建了一个服务类,它应该从数据库中获取用户名和密码,然后我试图将它们与登录信息进行比较。 但是,当我尝试对其进行测试时,我不断收到以下异常:

ArgumentException:初始化字符串的格式不符合从索引 0 开始的规范。

我尝试比较值的方法如下所示:

 private async Task<ApplicationUser> AuthenticateUser(string username, string password)
    
  
        var loginName = await _loginService.GetUsernameAsync(username);
        var loginPassword = await _loginService.GetPasswordAsync(password);



        if (username.Equals(loginName.Username))
        
            if(password.Equals(loginPassword.Password))
            
                return new ApplicationUser()
                
                    Username = loginName.Username,
                    Password = loginPassword.Password
                    //FullName = "Name"
                ;
            
            else
            
                return null;
            
        
        else
        
            return null;
        
    

【问题讨论】:

我想看看你的 _loginService.GetPasswordAsync(password);我想知道如何在没有用户名的情况下获取密码。 公共异步任务 GetPasswordAsync(string password) return await _context.Users .FirstOrDefaultAsync(e => e.Password == password); 但在现实生活中,大多数用户拥有相同的密码。您还需要使用用户名。 【参考方案1】:

我认为你有一个错误。替换

if (username.Equals(loginName.Username))
        
            if(password.Equals(loginPassword.Password))
            


if ( loginName!= null && username == loginName.UserName 
         && loginPassword !=null && password==loginPassword.Password)

顺便修复一下您的密码查询。为此,您不需要 2 个操作:


public async Task<Users> GetPasswordAsync(string userName,string password)
 
 return await _context.Set<Users>().Where(e => e.UserName==userName 
                        && e.Password == password).FirstOrDefaultAsync(); 
 

【讨论】:

感谢您的回答。我确实忘记检查字符串是否为空。 不客气!不要忘记接受它是否有效。 我得到这个异常的主要问题是我没有在一个方法中正确地得到连接字符串。因此,他无法验证数据库中的值 不要再对字符串使用等号了。这非常棘手。

以上是关于尝试实现登录时出现 ArgumentException(ASP.NET Core 项目)的主要内容,如果未能解决你的问题,请参考以下文章

将 android studio 项目与 Firebase 集成以实现 google 登录功能时出现依赖错误

当我尝试导航登录时出现 redux-oidc JavaScript 错误,我将在哪里修复它?

AWS Cognito 在尝试登录时出现 BadRequest 错误

使用 Facebook SDK 和 ParseFacebookUtils 登录时出现 NullPointerException

尝试登录时出现 JDBC 异常

#1193 - 尝试登录 phpmyadmin 时出现未知系统变量 'lc_messages'