2014-09-02 6 views
0

У меня есть настраиваемый модуль, который использует файл Routes.cs и AdminController.cs для определения нового маршрута и действия, которые необходимо предпринять, но доступ к нему возможен только тогда, когда пользователь вошли в систему, я попытался добавить [Авторизовать] и [AllowAnonymous] атрибуты в моем файле AdminController.cs и я попытался в том числе следующие в моем файле Web.config:.Разрешить анонимным пользователям доступ к определенным URL-адресам в Orchard CMS

<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); 

       } 
      } 
     } 
    } 
+0

Если вы хотите, чтобы все получили доступ к использованию Partha

+0

Это тоже не сработало, есть ли в файле Web.config определенное место, которое должно быть? – EmeraldArcher

+0

Где угодно до тега аутентификации. можете ли вы вставить этот раздел тега аутентификации? – Partha

ответ

0

Не используйте AdminController для этого создайте еще один контроллер под названием AnythingelseController. Контроллер администратора предназначен для администрирования. Он в основном добавляет фильтр администратора к этому контроллеру, поэтому пользователям, пытающимся получить доступ к действиям в этом контроллере, требуется разрешение AccessAdminPanel.

Если вы хотите, чтобы некоторые страницы в этом контроллере, чтобы быть администратором и некоторые анонимные тематические страницы создать свой контроллер MyController затем декорировать методы администратора с [Admin] и анонимными тематическими методами с [Themed].

+0

Работает как шарм – EmeraldArcher

Смежные вопросы