授权,除了一些html页面

时间:2018-06-13 11:58:12

标签: c# angularjs asp.net-mvc asp.net-web-api

在web api项目中(在客户端使用angularjs)我在AccountController中使用了web api控制器的Authorize属性和websecurity类进行用户身份验证。

我的HomeController看起来像这样:

public class HomeController : Controller
{
    [Authorize]
    public ActionResult Index()
    {
        ViewBag.Title = "Home Page";

        return View();
    }
}

Home Controller的我的Index.cshtml(razor页面)如下所示:

<div ng-view>
</div>

在_Layout.cshtml中,我定义了角度应用。

在网络配置中,我使用表单身份验证,如下所示:

<authentication mode="Forms">
  <forms loginUrl="~/Account/Login" timeout="2880"/>
</authentication>

对于大多数web api控制器,我使用[Atuthorize]属性进行方法。对于某些控制器,我使用[AllowAnonymous]属性,它很好(可以访问web api服务并获得json结果)。

我的app.js使用angular并包含我的页面的路由,如下所示:

var myApp = angular.module("myApp", ['ngRoute', 'angular.morris', 'angularUtils.directives.dirPagination'])
.config(function ($routeProvider, $locationProvider) {
    $routeProvider
    .when('/', {
        templateUrl: 'Template/Dashboard.html',
        controller: 'dashboardController'
    })
    .when('/Page1/', {
        templateUrl: 'Template/Page1.html',
        controller: 'page1Controller'
    })
    .when('/Page2/', {
        templateUrl: 'Template/Page2.html',
        controller: 'page2Controller'
    })
    .when('/Page3/', {
        templateUrl: 'Template/Page3.html',
        controller: 'page3Controller'
    })
    .when('/Page4/', {
        templateUrl: 'Template/Page4.html',
        controller: 'page4Controller'
    })
    .when('/Page5/', {
        templateUrl: 'Template/Page5.html',
        controller: 'page5Controller'
    })
    .otherwise('/', {
        templateUrl: 'Template/Dashboard.html',
        controller: 'dashboardController'
    });
})

运行应用程序时,显示“登录”页面。 (这很好)。

是否有任何解决方案,当我在浏览器上写localhost:12345 /#/ Page2(当我没有登录应用程序时)将我重定向到此页面(没有用户身份验证)?现在,始终将我重定向到登录页面。

0 个答案:

没有答案