在特定控制器asp.net核心中调用操作时运行代码

时间:2018-06-04 07:34:32

标签: c# asp.net-core .net-core

比如说我有一个管理员控制器,我想在调用管理控制器的任何操作的用户执行其他自定义检查。

如果仅为控制器调用任何操作,如何在控制器类中执行某些代码?

2 个答案:

答案 0 :(得分:1)

如果要在使用控制器访问任何方法时验证用户,请使用[Authorize]属性修饰控制器。

如果您只想限制某些操作,可以按原样保留控制器,只使用[Authorize]属性修饰所需的方法。

如果您希望在控制器中仅保留未经授权的某些方法,请使用[Authorize]属性修饰控制器,并且需要使用[AllowAnonymous]属性修饰您希望匿名用户访问的方法。

这会有帮助吗?如果您有具体要求,请将其包括在内。

答案 1 :(得分:1)

由于您没有要求特定的编程示例,我将仅向您推荐Service Filters的.net核心文档。

之前我已经使用过这些来为登录用户创建类似活动跟踪器的东西,所以说它是一个管理员,我想看看用户多久以前执行了一个操作,这个过滤器会检查用户上次的活动在允许访问该方法之前的会话中。

以下是一个通用示例:

public class MyFilter : ActionFilterAttribute
{
    public MyFilter()
    {
    }

    //After Method execution
    public override void OnActionExecuted(ActionExecutedContext context)
    {
        //Do stuff
    }

    //Before Method execution
    public override void OnActionExecuting(ActionExecutingContext context)
    {
        //Do stuff
    }
}

在初创公司中:services.AddScoped<MyFilter>();

以上控制器/操作:[ServiceFilter(typeof(MyFilter))]