在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(当我没有登录应用程序时)将我重定向到此页面(没有用户身份验证)?现在,始终将我重定向到登录页面。