Làm cách nào để định cấu hình dự án mvc / webapi của tôi để phương thức webapi được gọi từ chế độ xem dao cạo không trả về trang đăng nhập khi không được phép?
Đây là một ứng dụng MVC5 cũng có bộ điều khiển WebApi cho các cuộc gọi thông qua javascript.
Hai phương pháp dưới đây
[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
}
được gọi thông qua mã góc sau:
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);
});
}]
);
Vì vậy, tôi không đăng nhập và phương thức đầu tiên trả về dữ liệu thành công. phương thức thứ hai trả về dữ liệu (trong hàm thành công) chứa dữ liệu tương đương với trang đăng nhập. tức là những gì bạn sẽ nhận được trong mvc nếu bạn yêu cầu một hành động điều khiển được đóng dấu [Ủy quyền] và bạn không đăng nhập.
Tôi muốn nó trả về một trái phép 401, để tôi có thể hiển thị các dữ liệu khác nhau cho người dùng dựa trên việc họ có đăng nhập hay không. Lý tưởng nhất là nếu người dùng đã đăng nhập tôi muốn có thể truy cập vào tài sản Người dùng của Trình điều khiển để tôi có thể trả lại dữ liệu cụ thể cho Thành viên đó.
CẬP NHẬT: Vì không có đề xuất nào dưới đây dường như hoạt động nữa (thay đổi đối với Danh tính hoặc WebAPI), tôi đã tạo một ví dụ thô trên github để minh họa vấn đề.