我有一个多语言.Net 4 webforms网站(www.example.com/en/,www.example.com/fr/等),每种语言都有一个成员区,例如: www.example.com/en/members/和www.example.com/fr/members /
CMS(Umbraco)可以控制语言分支和内容,因此可以控制添加或删除它们。这意味着我无法使用root web.config中的<location>
部分拒绝匿名访问每个成员分支,因为它们可能在应用程序启动后发布。
有没有办法在应用程序启动后将ConfigurationLocation
部分添加到Locations
实例的System.Configuration.Configuration
属性,而无需重新启动应用程序?或者,是否有更灵活的方法来控制运行时的路径访问?
答案 0 :(得分:1)
或者,是否有更灵活的方法来控制路径访问 运行
您可以在BasePage
Page_Load event
内所有类似内容的安全页面
if(!HttpContext.Current.User.Identity.IsAuthenticated)
Response.Redirect("Login.aspx");
<强>更新强>
如果您不知道哪些页面将受到保护,请更改上面的代码以从数据库表中读取需要保护的页面,并将当前页面名称与表格中列出的页面名称进行比较。例如,您可以捕获列表并每20分钟自动使缓存过期。至少你可以将页面标记为安全,无需重新启动应用程序,同时保持一定的灵活性,而不需要事先知道哪些应该是安全的。
答案 1 :(得分:0)
我使用的解决方案是创建一个HttpModule。但是使用umbraco中的HttpModule,您无法轻松检索currentNodeId,因为它是作为不同进程的一部分添加的。
该模块对PostAuthenticateRequest
事件进行了以下检查:
如果这两个都返回false