Program.c
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllersWithViews();
builder.Services.AddSession(m => m.IdleTimeout=TimeSpan.FromMinutes(30));//默认20分钟
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseSession();//使用session中间件
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapControllerRoute(
name: "default",
pattern: "{controller=Users}/{action=Login}/{id?}");
app.Run();
Models->Users.cs
namespace Filters_Info.Models
{
public class Users
{
/// <summary>
/// 用户
/// </summary>
public string? Account { get; set; }
/// <summary>
/// 密码
/// </summary>
public string? Pwd { get; set; }
/// <summary>
/// 昵称
/// </summary>
public string? NickName { get; set; }
}
}
Controllers->UsersController.cs
using Filters_Info.Filters;
using Filters_Info.Models;
using Microsoft.AspNetCore.Mvc;
namespace Filters_Info.Controllers
{
public class UsersController : Controller
{
public IActionResult Login()
{
return View();
}
public IActionResult UserLogin(Users users)
{
//redis内存库 session
if (users.Account == "zhangsan" && users.Pwd == "123456")
{
HttpContext.Session.SetString("users", users.Account);
return View("Edit");
}
else
{
return View("Login");
}
}
public IActionResult Reginster()
{
return View();
}
[LoginAuthorize]
public IActionResult Edit()
{
return View();
}
[LoginAuthorize]
public IActionResult List()
{
return View();
}
}
}
Views->Users->Login.cshtml
@*
For more information on enabling MVC for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
*@
@{
ViewData["title"] = "用户登录页面";
}
<div>
<form action="/Users/UserLogin" method="post">
<div>
账号:<input type="text" name="Account" atuocomplete="off" />
</div>
<div>
密码:<input type="password" name="Pwd" />
</div>
<div>
<input type="submit" />
</div>
</form>
</div>
Views->Users->Edit.cshtml
@*
For more information on enabling MVC for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
*@
@{
ViewData["title"] = "用户登录编辑页";
}
<div>用户登录编辑页</div>
Views->Users->List.cshtml
@*
For more information on enabling MVC for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
*@
@{
ViewData["title"] = "用户登录列表页";
}
<div>用户例如列表页</div>
Views->Users->Register.cshtml
@*
For more information on enabling MVC for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
*@
@{
ViewData["title"] = "用户注册页";
}
<div>用户注册页</div>
Filters->LoginAuthorizeAttribute.cs
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;
namespace Filters_Info.Filters
{
/// <summary>
/// 登录授权过滤器
/// </summary>
public class LoginAuthorizeAttribute:ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext context)
{
string? users = context.HttpContext.Session.GetString("users");
if (users == null)//判断没有登录
{
context.Result = new RedirectToRouteResult(
new { controller="Users",action="Login"}
);
}
base.OnActionExecuting(context);
}
}
}