.net core3.1 写一个过滤器用来验证sesion
时间: 2023-08-01 22:10:23 浏览: 106
用过滤器验证
在 .NET Core 3.1 中,可以使用过滤器来验证 Session。具体实现步骤如下:
1. 创建一个 Session 验证过滤器类,继承自 ActionFilterAttribute:
```csharp
public class SessionValidationFilter : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext context)
{
var session = context.HttpContext.Session.GetString("UserName");
if (string.IsNullOrEmpty(session))
{
context.Result = new RedirectToActionResult("Index", "Login", null);
}
}
}
```
2. 在需要验证 Session 的 Controller 或 Action 上,添加该过滤器的特性:
```csharp
[SessionValidationFilter]
public class HomeController : Controller
{
//...
}
```
这样,当请求到达该 Controller 或 Action 时,就会先执行 SessionValidationFilter 过滤器中的 OnActionExecuting 方法。在该方法中,我们通过 HttpContext.Session.GetString("UserName") 方法获取 Session 中的 UserName 值,如果为空则重定向到登录页面。如果验证通过,则会继续执行后续的 Action。
需要注意的是,使用 Session 验证过滤器需要先在 Startup.cs 中启用 Session,添加以下代码:
```csharp
public void ConfigureServices(IServiceCollection services)
{
//...
services.AddDistributedMemoryCache();
services.AddSession(options =>
{
options.IdleTimeout = TimeSpan.FromMinutes(30);
options.Cookie.HttpOnly = true;
options.Cookie.IsEssential = true;
});
//...
}
```
这样就可以在 .NET Core 3.1 中实现 Session 验证过滤器了。
阅读全文