gpt4 book ai didi

ASP.NET 通过用户名授予目录访问权限

转载 作者:行者123 更新时间:2023-12-02 14:33:10 26 4
gpt4 key购买 nike

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

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

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

<authorization>

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

</authorization>

是否有一种简单的方法来确保只有特定用户才能访问其文件夹?

最佳答案

使用 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

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

关于ASP.NET 通过用户名授予目录访问权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11110986/

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