3

这可以通过创建一个新的 HTTP 处理程序来完成,但是有没有一种简单的方法来配置以下内容?:

  1. 站点是基于用户名的用户帐户设置的,例如 A001、A002....等。
  2. 一旦用户登录,他们就可以访问其目录(/A001)等中的资源......其中可能包含文件和图像

我在 ASP.NET 中使用角色和授权时遇到的问题是角色要么是通用的(由角色定义,例如任何登录的人都可以访问资源),要么是硬编码在 web.config 文件中,这显然不是在创建用户帐户的动态环境中可行:

<authorization>

<allow users="John"/> // allow John only 
<deny users="*"/>  // deny others

</authorization> 

有没有一种简单的方法可以确保只有特定用户才能访问他们的文件夹?

4

1 回答 1

1

那么使用 HTTP 模块就足够简单了。

首先这是请求生命周期:

  • 应用程序_开始请求。
  • Application_AuthenticateRequest。
  • Application_PostAuthenticateRequest。
  • 应用程序_默认身份验证。
  • 应用程序_授权请求。
  • Application_PostAuthorizeRequest。
  • Application_ResolveRequestCache。
  • Application_PostResolveRequestCache。
  • Application_MapRequestHandler。仅当服务器以集成模式运行 IIS 7 且至少 >Net Framework 3.0 时触发
  • Application_PostMapRequestHandler。
  • Application_AcquireRequestState。
  • Application_PostAcquireRequestState。
  • Application_PreRequestHandler 执行。
  • 页面事件处理程序被执行。(参考页面生命周期)
  • Application_PostRequestHandler 执行。
  • Application_ReleaseRequestState。
  • Application_PostReleaseRequestState
  • Application_UpdateRequestCache。
  • Application_PostUpdateRequestCache
  • Application_LogRequest。仅在服务器为 IIS 7 集成模式且至少为 .Net Framework 3.0 时触发
  • Application_PostLogRequest。仅在服务器为 IIS 7 集成模式且至少为 .Net Framework 3.0 时触发
  • 应用程序_结束请求。

欲了解更多信息:http: //msdn.microsoft.com/en-us/library/system.web.httpapplication.aspx

我认为最适合您需求的活动是Application_AuthorizeRequest

在这里,您可以获得正在访问的路径,并且您可以在数据库中拥有一张地图,将您的用途与其允许的路径相关联,例如:

UserID         Path
userID1        ~/UserFiles/User1
userID2        ~/UserFiles/User2
userID3        ~/UserFiles/User3

然后在事件中阅读此地图并决定是否应该授权用户

于 2012-06-19T23:47:10.650 回答