表单验证 – 如何使用FormsAuthentication授予对URL的匿名访问权限?

前端之家收集整理的这篇文章主要介绍了表单验证 – 如何使用FormsAuthentication授予对URL的匿名访问权限?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在大多数情况下,我的webapp需要身份验证才能做任何事情。有几页,即首页,我希望人们能够访问而不进行身份验证。

具体来说,我想允许匿名访问这些网址:

  1. /home
  2. /default.aspx

我使用asp.net MVC和FormsAuthentication。两个url都指向相同的视图:

  1. /home/index.aspx

这是我目前在web.config中的配置。

  1. <authentication mode="Forms">
  2. <forms loginUrl="~/Account/logon" timeout="2880" />
  3. </authentication>
  4. <authorization>
  5. <deny users="?" />
  6. </authorization>

阅读授权标签的文档,它说“配置Web应用程序的授权,控制客户端访问URL资源”。看来我应该可以使用授权标签指定一个url并允许访问。

就像是:

  1. <authentication mode="Forms">
  2. <forms loginUrl="~/Account/logon" timeout="2880" />
  3. </authentication>
  4.  
  5. <authorization>
  6. <deny users="?" />
  7. </authorization>
  8.  
  9. <authorization url="/default.aspx">
  10. <allow users="?" />
  11. </authorization>
  12.  
  13. <authorization url="/home">
  14. <allow users="?" />
  15. </authorization>

解决方法

我讨厌回答我自己的问题,但是由于我最终弄清楚了,我想我会分享知识。

使用位置标签,并按照正确的顺序放置allow和deny标签

位置标签可用于配置特定的网址资源。在我的情况下,我想特别配置几个URL和文件夹。

最初没有工作,因为我没有按正确的顺序允许/拒绝。根据MSDN,“授权模块根据发现的第一个访问规则是允许还是拒绝规则,授予或拒绝访问URL资源。”

在我的情况下,我需要把所有的公共资料放在第一位(default.aspx,home,styles,图像,脚本),然后我把所有的东西都拒绝。我遗漏了最后一个位置标签上的路径。这使它适用于所有文件和子文件夹。

最终结果,用户可以访问主页,拉起图像和样式,但是必须登录

这是我现在的web配置文件

  1. <!--AUTHORIZATION AND AUTHENTICATION RULES-->
  2. <location path="default.aspx">
  3. <system.web>
  4.  
  5. <authorization>
  6. <allow users="?"/>
  7. </authorization>
  8. </system.web>
  9.  
  10. </location>
  11.  
  12. <location path="Home">
  13. <system.web>
  14.  
  15. <authorization>
  16. <allow users="?"/>
  17. </authorization>
  18. </system.web>
  19.  
  20. </location>
  21.  
  22. <location path="Styles">
  23. <system.web>
  24.  
  25. <authorization>
  26. <allow users="?"/>
  27. </authorization>
  28. </system.web>
  29.  
  30. </location>
  31.  
  32. <location path="Scripts">
  33. <system.web>
  34.  
  35. <authorization>
  36. <allow users="?"/>
  37. </authorization>
  38. </system.web>
  39.  
  40. </location>
  41.  
  42. <location path="images">
  43. <system.web>
  44.  
  45. <authorization>
  46. <allow users="?"/>
  47. </authorization>
  48. </system.web>
  49.  
  50. </location>
  51.  
  52. <location allowOverride="true">
  53. <system.web>
  54. <authentication mode="Forms">
  55. <forms loginUrl="~/Account/logon" timeout="2880" slidingExpiration="true" />
  56. </authentication>
  57. <authorization>
  58. <deny users="?" />
  59. </authorization>
  60. </system.web>
  61. </location>
  62.  
  63. <!--END AUTHORIZATION AND AUTHENTICATION RULES-->

猜你在找的HTML相关文章