ฉันจะกำหนดค่าโครงการ mvc / webapi ของฉันอย่างไรเพื่อให้วิธีการ webapi ที่เรียกจากมุมมองมีดโกนไม่ส่งคืนหน้าล็อกอินเมื่อไม่ได้รับอนุญาต
มันเป็นแอปพลิเคชั่น MVC5 ซึ่งมีตัวควบคุม WebApi สำหรับการโทรผ่าน javascript
ทั้งสองวิธีด้านล่าง
[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);
});
}]
);
ดังนั้นฉันไม่ได้เข้าสู่ระบบและวิธีแรกที่ส่งกลับข้อมูลสำเร็จ วิธีที่สองส่งกลับข้อมูล (ในฟังก์ชั่นความสำเร็จ) ซึ่งมีข้อมูลเทียบเท่ากับหน้าเข้าสู่ระบบ นั่นคือสิ่งที่คุณจะได้รับใน mvc หากคุณร้องขอการกระทำของคอนโทรลเลอร์ที่ประทับด้วย [อนุญาต] และคุณไม่ได้ลงชื่อเข้าใช้
ฉันต้องการให้ส่งคืน 401 ที่ไม่ได้รับอนุญาตเพื่อให้ฉันสามารถแสดงข้อมูลที่แตกต่างกันสำหรับผู้ใช้โดยขึ้นอยู่กับว่าพวกเขาเข้าสู่ระบบหรือไม่ เป็นการดีถ้าผู้ใช้เข้าสู่ระบบฉันต้องการที่จะสามารถเข้าถึงคุณสมบัติผู้ใช้ของตัวควบคุมเพื่อให้ฉันสามารถส่งกลับข้อมูลเฉพาะกับสมาชิกนั้น
ปรับปรุง: เนื่องจากไม่มีคำแนะนำด้านล่างดูเหมือนว่าจะทำงานได้อีกต่อไป (การเปลี่ยนแปลง Identity หรือ WebAPI) ive สร้างตัวอย่างดิบบนgithubซึ่งควรจะแสดงให้เห็นปัญหา