【问题标题】:ASP.NET Giving Access to directory by UsernameASP.NET 通过用户名访问目录
【发布时间】:2012-06-19 23:36:43
【问题描述】:

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

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

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

<authorization>

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

</authorization> 

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

【问题讨论】:

    标签: asp.net authorization security httphandler


    【解决方案1】:

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

    首先这是请求生命周期:

    • Application_BeginRequest。
    • Application_AuthenticateRequest。
    • Application_PostAuthenticateRequest。
    • Application_DefaultAuthentication。
    • Application_AuthorizeRequest。
    • 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 时触发
    • Application_EndRequest。

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

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

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

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

    然后如果阅读此地图并决定是否应该授权用户

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-23
      • 2011-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-18
      • 2013-02-25
      相关资源
      最近更新 更多