我想做的是写一些ASP。. NET核心中间件允许用户在看到视图的内容之前进行授权。
我使用的是Microsoft.AspNetCore.Session包。
中间件的代码:// simplified code that should check if the Session is valid
if (HttpContext.Session.GetString("xyz") == null)
{
//Return to Login View;
}
// else (when the session is valid) return to the view that the user wants to view.
我不明白的地方:
- 如何通过中间件将用户重定向到另一个页面
- 如何在我的项目中正确使用中间件
- 如果中间件是这种任务的正确方法
- 或者如何在中间件中使用会话。它不工作的方式,我使用他们在控制器。
中间件在我的控制器中的实现图像
如何通过中间件将用户重定向到另一个页面
如何在我的项目中正确使用中间件
如果你想在某些情况下检查会话和重定向用户,您可以查看相关文档,并尝试在Program.cs
中使用下面的中间件.......
app.UseRouting()
app.Use(async (context, next) =>
{
if (context.Session.TryGetValue("key",out var val))
{
context.Response.Redirect("targeturi");
}
else
{
await next.Invoke();
}
});
......
如果中间件是这种任务的正确方法
在asp.net core中已经有认证服务了,你可以检查这个文档并选择一个
或者如何在中间件中使用会话。这是行不通的我在控制器中使用它们。
您的图片显示您使用过滤器(TypeFilterAttribute),而不是中间件,您可以检查此文档相关
如果您想尝试使用授权过滤器,您可以尝试创建一个过滤器,如:
public class SomeFilter : IAuthorizationFilter
{
public void OnAuthorization(AuthorizationFilterContext context)
{
if (context.HttpContext.Session.TryGetValue("key",out var val))
{
context.Result = new RedirectResult("Index");
}
}
}
应用过滤器:
[TypeFilter(typeof(SomeFilter))]