gpt4 book ai didi

c# - 在不更改 url 的情况下显示自定义页面

转载 作者:行者123 更新时间:2023-12-05 07:21:34 26 4
gpt4 key购买 nike

我想在用户尝试访问他们不应该访问的内容时显示一个页面。此限制是检查自定义中间件。当中间件返回 false 并调用新 Controller 时,我不希望更改客户端 url。

这是我的中间件检查:

public async Task Invoke(HttpContext context, IAutorisationService service)
{
var user = service.CreateUserModel(context);
var page = service.CreatePageModel(context);
context.Items.Add("CurrentUser", user);

if (service.UserAllowedToPage(user, page))
await _next.Invoke(context);
else
{
context.Response.Redirect("/Error/CustomError");
}
}

这是错误 Controller :

public IActionResult CustomError()
{
if (!HttpContext.Items.TryGetValue("CurrentUser", out var o) || !(o is UserModel userModel))
{
return View();
}

if (userModel.IsSuperUser)
{
return View();
}

这里返回的 View 都工作正常。

这是我的 startup.cs(我现在正在努力的地方):

app.UseMvc(routes =>
{
//routes.MapRoute(
//name: "ErrorRoute",
//template: "{controller=Error}",
//defaults: new {controller = "Error", action = "CustomError"});

routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");

});

我似乎无法正确使用我在网上找到的任何组合。

更新

好的,所以我不会进一步了解这些政策。我会尝试更好地解释我的情况:我在管道末端有一个自定义中间件(就在 app.UseMvc 之前)该中间件有一个调用不同类中的 bool 运算符的异步任务调用方法。现在,如果 bool 值返回 true,中间件任务将执行:await _next.Invoke(HttpContext) 如果该 bool 值返回 false,我希望中间件执行异常。当异常被抛出时,我想要:捕获它并激活 ErrorController 中的 CustomError 操作,然后返回自定义 View 。这可能吗? (抱歉,如果我的第一个问题不完整)

最佳答案

您好,您可以使用

返回错误 View
return View("Error")

你可以检查你需要的东西,如果有问题而不是主视图,你可以返回错误 View

关于c# - 在不更改 url 的情况下显示自定义页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56832854/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com