用户登录:输入账号和密码,然后判断用户名和密码是否正确,返回对应的处理结果 登录以后将用户名和密码存放在Session中 并在跳转后的页面上从Session中读取用户名和密码,并显示在界面上
定义接口入参 ```csharp namespace WebApplication5.DTO { public class UserLoginDTO {
public string? username { get; set; }public string? password { get; set; }public override string ToString(){return "username: " + username + " password: " + password;}
} }
2. 定义统一JSON返回格式```csharpnamespace WebApplication5.DTO{public class Result{public Result() { }public Result(int code,string message, Object result){this.code = code;this.message = message;this.result = result;}public Result(int code,string message){this.code = code;this.message = message;}public static Result Success(string message){return new Result(200,message);}public static Result Success(string message, Object data){return new Result(200, message, data);}public static Result Error(string message){return new Result(500, message);}public int code { get; set; }public string? message { get; set; }public object? result { get; set; }public override string ToString(){return "code: " + code + " message: " + message + " result: " + result;}}}
- 定义登录控制器UserController
这里为了顺应老师作业的要求,用户名和密码是随便填写的 实际上如果要进行校验
- 有数据库 => 执行SQL语句进行判断账号密码是否正确
- 无数据库 => 结合代码判断账号和密码是否正确
对入参进行参数校验,然后将返回结果使用JsonResult包裹进行返回
using Microsoft.AspNetCore.Mvc;using WebApplication5.DTO;namespace WebApplication5.controllers;[ApiController][Route("[controller]")]public class UserLoginController : ControllerBase{private readonly ILogger<UserLoginController> _logger;public UserLoginController(ILogger<UserLoginController> logger){_logger = logger;}[HttpPost(Name = "UserLogin")]public JsonResult doLogin([FromBody] UserLoginDTO userLoginDTO){Console.WriteLine("当前登录用户信息" + userLoginDTO.ToString());Console.WriteLine("login success");if(userLoginDTO.username == null && userLoginDTO.password == null){return new JsonResult(Result.Error("username and password cannot be null"));}if(userLoginDTO.username == null){return new JsonResult(Result.Error("username cannot be null"));}if(userLoginDTO.password == null){return new JsonResult(Result.Error("password cannot be null"));}HttpContext.Session.SetString("username", userLoginDTO.username);HttpContext.Session.SetString("password", userLoginDTO.password);return new JsonResult(Result.Success("login success"));}}
- 在前端页面使用Ajax发起请求 ```csharp @page @model IndexModel @{ ViewData[“Title”] = “首页”; } <!DOCTYPE html>
5. 登录跳转后的页面```csharp@page@model WebApplication5.Pages.HomeModel@{ViewData["Title"] = "页面2";string? username = this.ViewContext.HttpContext.Session.GetString("username");string? password = this.ViewContext.HttpContext.Session.GetString("password");if(username != null && password != null){<text>用户名: @username</text><text>密码:@password</text>}else{<text>请先登录</text>this.ViewContext.HttpContext.Response.Redirect("/");}}<!DOCTYPE html><html lang="zh-cn"><head><meta charset="utf-8" /><style>.pb-3{font-size: 40pt;color: blue;}</style></head><body><div></div></body></html><script type="text/javascript"></script>
从页面的请求路径中获取参数 在ASP.NET下,可以通过Request.QueryString[“id”] 来获取传入的参数,但是在 ASP.NET Core 下是会报错的 需要改为: HttpContext.Request.Query[“id”] 来获取
@page@model WebApplication5.Pages.AboutModel@{ViewData["Title"] = "页面3";string username = HttpContext.Request.Query["username"];string password = HttpContext.Request.Query["password"];if(username != null && password != null){<text>用户名: @username</text><text>密码:@password</text>}else{<text>请先登录</text>this.ViewContext.HttpContext.Response.Redirect("/");}}<!DOCTYPE html><html lang="zh-cn"><head><meta charset="utf-8" /><style>.pb-3{display: flex;align-items: center;justify-content: center;font-size: 40pt;color: blue;}</style></head><body><div></div></body></html><script type="text/javascript"></script>
