c#三层结构写小程序后端登录接口
时间: 2023-09-01 10:06:28 浏览: 51
好的,我可以为您提供一个简单的 C# 三层结构的登录接口示例。
首先,我们需要创建一个名为 "LoginController.cs" 的控制器,在其中添加以下代码:
```csharp
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using Newtonsoft.Json.Linq;
namespace YourApplication.Controllers
{
public class LoginController : ApiController
{
[HttpPost]
public IHttpActionResult Authenticate(JObject credentials)
{
if (credentials == null)
throw new HttpResponseException(HttpStatusCode.BadRequest);
var email = credentials["email"];
var password = credentials["password"];
if (email == null || password == null)
throw new HttpResponseException(HttpStatusCode.BadRequest);
var connString = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
var query = "SELECT * FROM Users WHERE Email = @Email AND Password = @Password";
using (var conn = new SqlConnection(connString))
{
conn.Open();
using (var cmd = new SqlCommand(query, conn))
{
cmd.Parameters.AddWithValue("@Email", email);
cmd.Parameters.AddWithValue("@Password", password);
using (var reader = cmd.ExecuteReader())
{
if (reader.HasRows)
{
return Ok(new { success = true, message = "Login successful!" });
}
else
{
return Ok(new { success = false, message = "Invalid email or password!" });
}
}
}
}
}
}
}
```
在这个控制器中,我们定义了一个 `Authenticate` 方法,该方法接收一个 JSON 对象作为参数,其中包含用户提供的电子邮件和密码。我们使用这些凭据查询数据库中的用户表,并检查是否有匹配的记录。如果有,我们返回一个成功的响应;否则,我们返回一个失败的响应。
接下来,我们需要创建一个名为 "UserService.cs" 的服务类,在其中添加以下代码:
```csharp
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using YourApplication.Models;
namespace YourApplication.Services
{
public class UserService
{
private readonly string _connString;
public UserService()
{
_connString = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
}
public User Authenticate(string email, string password)
{
var query = "SELECT * FROM Users WHERE Email = @Email AND Password = @Password";
using (var conn = new SqlConnection(_connString))
{
conn.Open();
using (var cmd = new SqlCommand(query, conn))
{
cmd.Parameters.AddWithValue("@Email", email);
cmd.Parameters.AddWithValue("@Password", password);
using (var reader = cmd.ExecuteReader())
{
if (reader.HasRows)
{
reader.Read();
var user = new User
{
Id = Convert.ToInt32(reader["Id"]),
Email = reader["Email"].ToString(),
Password = reader["Password"].ToString(),
FirstName = reader["FirstName"].ToString(),
LastName = reader["LastName"].ToString()
};
return user;
}
else
{
return null;
}
}
}
}
}
}
}
```
在这个服务类中,我们定义了一个 `Authenticate` 方法,该方法接收一个电子邮件和密码,并使用这些凭据查询数据库中的用户表。如果有匹配的记录,我们返回一个用户对象;否则,我们返回 null。
最后,我们需要创建一个名为 "User.cs" 的模型类,在其中添加以下代码:
```csharp
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace YourApplication.Models
{
public class User
{
public int Id { get; set; }
public string Email { get; set; }
public string Password { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
}
```
这个模型类定义了一个用户对象,其中包含用户的 ID、电子邮件、密码、名字和姓氏。
现在,我们已经完成了一个简单的 C# 三层结构的登录接口。您可以使用上述示例作为参考,并根据自己的需求进行修改和扩展。