C# 使用HttpModule拦截目标事件处理程序?

C# 使用HttpModule拦截目标事件处理程序?,c#,asp.net,httpmodule,C#,Asp.net,Httpmodule,在asp.net webfrom中,是否可以使用HttpModule获取用于处理用户请求的事件处理程序的名称: 例如,如果用户单击按钮btn我希望将btn\u click作为事件处理程序的名称。这样,如果他不被允许这样做,我可以限制他你解决权限问题的方法太复杂了。有更多的标准方法来决定用户是否可以执行操作,例如在事件处理程序本身中编写适当的逻辑,不向未经授权的用户呈现控件,以及根据权限使用属性限制谁可以执行您的方法。 从所有可能的角度描述它 您的实现也是可能的,检查按钮是否被单击就足够了(为

在asp.net webfrom中,是否可以使用
HttpModule
获取用于处理用户请求的事件处理程序的名称:
例如,如果用户单击按钮
btn
我希望将
btn\u click
作为事件处理程序的名称。这样,如果他不被允许这样做,我可以限制他

你解决权限问题的方法太复杂了。有更多的标准方法来决定用户是否可以执行操作,例如在事件处理程序本身中编写适当的逻辑,不向未经授权的用户呈现控件,以及根据权限使用属性限制谁可以执行您的方法。
从所有可能的角度描述它



您的实现也是可能的,检查按钮是否被单击就足够了(为什么您关心事件处理程序?您只需要知道按钮被单击,并且您可以从底层请求对象获取此信息),然而,对于ASP.NET中的标准任务来说,这确实是一个过火的做法

您应该明确哪些是您想要订阅的事件。HttpModule可以提供一些但不是全部。@LexLi我还不够clare现在看一看,我编辑了我的postMy实际实现基于页面过滤我截取请求的页面并查看一组表,如果用户是否有权访问该页面,这样做时,角色或用户名没有硬编码,通过这种方式,我们可以让应用程序管理员创建新的角色和用户,而无需对源代码进行任何更改。现在我想通过允许管理员选择可以执行的巫术动作来进行细粒度控制。然而,我的主张仍然站不住脚。您解决此问题的方法(通过尝试查找事件处理程序)过于复杂。您不需要事件处理程序,您可以检查以查看是谁导致了回发,然后向请求中添加一些变量,这些变量将通知页面它不应执行事件处理程序,或者通过http模块的授权事件返回任何您希望返回的内容。获取导致回发的名称可以正常工作,但是是否可以在HttpModule级别执行此操作,以便我可以将所有控件名称映射到表中的操作(删除、添加、更新…)并筛选主题,而无需复制每个事件中的验证代码handlerHttpModule只提供有限的信息。请看我在上面的评论中提供的链接。它有2-3种不同的方式在页面内获取回发控件(httpmodule不知道控件,因此在这个意义上会受到更多限制)。您可以为您的所有页面创建一个基本页面,并在page_load中运行那里的提供方法,以决定要做什么。如果您坚持,您可以调整链接中提供的方法,以在http模块中查询请求。只需遍历请求对象并查找控件名称,查看是谁导致了回发