如何配置 mvc/webapi 项目,使从剃刀视图调用的 webapi 方法在未经授权时不返回登录页面?
它是一个 MVC5应用程序,它还具有通过 javascript 进行调用的 WebApi 控制器。
下面的两种方法
[Route("api/home/LatestProblems")]
[HttpGet()]
public List<vmLatestProblems> LatestProblems()
{
// Something here
}
[Route("api/home/myLatestProblems")]
[HttpGet()]
[Authorize(Roles = "Member")]
public List<vmLatestProblems> mylatestproblems()
{
// Something there
}
通过以下角度代码调用:
angular.module('appWorship').controller('latest',
['$scope', '$http', function ($scope,$http) {
var urlBase = baseurl + '/api/home/LatestProblems';
$http.get(urlBase).success(function (data) {
$scope.data = data;
}).error(function (data) {
console.log(data);
});
$http.get(baseurl + '/api/home/mylatestproblems')
.success(function (data) {
$scope.data2 = data;
}).error(function (data) {
console.log(data);
});
}]
);
所以我没有登录,第一个方法成功地返回了数据。第二个方法返回(在成功函数中)包含相当于登录页面的数据。也就是说,如果您请求了一个带有[ Authorize ]标记的控制器操作,而您没有登录,那么您将在 mvc 中获得什么。
我希望它返回一个401未经授权,这样我可以显示不同的数据为用户,如果他们登录或没有。理想情况下,如果用户登录,我希望能够访问控制器的用户属性,这样我就可以返回数据特定的成员。
更新: 由于下面的建议似乎都不起作用了(对 Identity 或 WebAPI 的更改) ,我在 Github上创建了一个原始示例,应该可以说明这个问题。