允许匿名用户访问Orchard CMS中的特定URL



我有一个自定义模块,它使用Routes.cs和AdminController.cs文件来定义新的url路由和要执行的操作,但只有当用户登录时才能访问它

 <location path="/speedbump">
    <system.web>
      <authorization>
        <allow users="?"/>
      </authorization>
    </system.web>
  </location>

这两种方法似乎都不起作用。我该如何确保该网站的所有用户/访问者都可以访问该url,而不仅仅是那些登录的用户/访问者?非常感谢。

Routes.cs文件:

public class Routes : IRouteProvider
    {
        public void GetRoutes(ICollection<RouteDescriptor> routes)
        {
            foreach (var routeDescriptor in GetRoutes())
                routes.Add(routeDescriptor);
        }
        public IEnumerable<RouteDescriptor> GetRoutes()
        {
            return new[] {
                new RouteDescriptor {
                    Priority = 15,
                    Route = new Route(
                        "speedbump",
                        new RouteValueDictionary {
                            {"area", "Speedbump"},
                            {"controller", "Admin"},
                            {"action", "isValidURL"}
                        },
                        new RouteValueDictionary(),
                        new RouteValueDictionary {
                            {"area", "Speedbump"}
                        },
                        new MvcRouteHandler())
                }
            };
        }
    }

AdminController.cs文件:

[Authorize]
    public class AdminController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }
        [AllowAnonymous]
        public void isValidURL()
        {
            string requestedURL = Request.QueryString["url"];
            //Create a list of strings to contain all the "valid" URLs
            var whiteList = new List<string>();
            //Add URLs to the list
            whiteList.Add("www.google.com");
            foreach (string validURL in whiteList)
            {
                if (requestedURL == validURL)
                {
                    Response.Write("Speedbump");
                    //Response.Redirect(requestedURL);
                }
            }
        }
    }

不要使用AdminController,创建另一个名为AnythingelseController的控制器。管理员控制器是为管理员的东西。它基本上将Admin筛选器添加到该控制器中,因此尝试访问该控制器中的操作的用户需要AccessAdminPanel权限。

如果您希望该控制器中的某些页面是admin,而某些页面是匿名主题页面,请创建控制器MyController,然后用[Admin]装饰admin方法,用[Themed]装饰匿名主题方法。

最新更新