2013-05-09 5 views
0

Угловая Маршрут:запретить пользователям получать частичными

angular.module('AMS', []). 
    config(['$routeProvider', function ($routeProvider) { 
     $routeProvider. 
      when('/dashboard', { templateUrl: '/Dashboard', controller: dashboardController }). 
      when('/settings', { templateUrl: '/Settings', controller: settingsController }). 
      otherwise({ redirectTo: '/dashboard' }); 
    }]); 

Пример:

/* client side route */ 
http://localhost:4117/#/dashboard 

указывает на

/* controller that returns the partial */ 
http://localhost:4117/Dashboard 

Все работает, как ожидалось, но если я ставлю тот же URL в браузер (без ведущего /#/), частичный будет по-прежнему возвращаться, что не очень хорошо.

Как предотвратить это?

+0

Ghetto установка так: не индексных действия, которые возвращают взгляды, но чувствует себя не так, даже если он работает. Кроме того, он предотвращает случайные просмотры, так как каждый может просто перейти к конфигурации маршрута и все равно увидеть маршруты ASP.NET MVC. –

ответ

0

вы можете использовать как пользовательский ActionMethodSelectorAttribute для своего метода на стороне сервера. Например:

public class AjaxRequestAttribute : ActionMethodSelectorAttribute 
{ 
    public override bool IsValidForRequest(ControllerContext controllerContext, 
              MethodInfo methodInfo) 
    { 
     return controllerContext.HttpContext.Request.IsAjaxRequest(); 
    } 
} 

и польза:

[AjaxRequest] 
public JsonResult GetTemplates() 
{ 
... 
}