gpt4 book ai didi

c# - 如何在 global.asax 中调用 Controller 方法?

转载 作者:行者123 更新时间:2023-11-30 22:08:55 25 4
gpt4 key购买 nike

我想调用 Global.asax 中的 Controller 方法。代码如下。

protected void Application_PostAuthenticateRequest(Object sender, EventArgs e)
{
if (User.Identity.IsAuthenticated)
{
//here we can subscribe user to a role via Roles.AddUserToRole()
}
}

此事件在 global.asax 中。我想调用从数据库返回用户权限的 Controller 方法。在我将用户权限保存在 session 和我的 Controller 构造函数之后,这怎么可能在这里调用 Controller 方法?代码如下。

public class AccountController : Controller
{

private readonly ISecurityService securityService;

public AccountController(ISecurityService securityService)
{
this.securityService = securityService;
}
}

请指导我。

最佳答案

您可以使用自定义 AuthorizeAttribute 来处理这个问题.这允许您将属性放在任何 Controller /方法的顶部,您需要通过身份验证才能成功调用这些 Controller /方法。这使您可以覆盖 AuthorizeCore然后您可以使用它来执行您想要执行的任何自定义授权。您还可以通过此方法将任何其他信息保存到 session 中。

例如:

public class CustomAuthorizeAttribute : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
// do your own athorization stuff here
}
}

然后您可以使用您的属性装饰需要使用此授权的 Controller :

[CustomAuthorize]
public class AccountController : Controller
{
}

或者使用基本 Controller :

[CustomAuthorize]
public class BaseAuthController : Controller
{
}

public class AccountController : BaseAuthController
{
}

关于c# - 如何在 global.asax 中调用 Controller 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21965858/

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