আমি কীভাবে আমার এমভিসি / ওয়েবপিপি প্রকল্পটি কনফিগার করব যাতে একটি রেজার ভিউ থেকে ডাকা একটি ওয়েবপি পদ্ধতি যখন অননুমোদিত থাকে তখন লগইনপৃষ্ঠায় ফিরে আসে না?
এটি একটি এমভিসি 5 অ্যাপ্লিকেশন যার সাথে জাভাস্ক্রিপ্টের মাধ্যমে কল করার জন্য ওয়েবএপিআই কন্ট্রোলার রয়েছে।
নীচে দুটি পদ্ধতি
[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);
});
}]
);
সুতরাং আমি লগ ইন করছি না এবং প্রথম পদ্ধতিটি সাফল্যের সাথে ডেটা ফেরত দেয়। দ্বিতীয় পদ্ধতিটি (সাফল্যের ফাংশনে) ডেটা দেয় যা লগইন পৃষ্ঠার সমতুল্য থাকে। উদাহরণস্বরূপ, আপনি যদি এমভিসি-তে পাবেন তবে আপনি যদি কোনও কন্ট্রোলার অ্যাকশন অনুরোধ করেন যা [অনুমোদন] এর সাথে স্ট্যাম্পযুক্ত ছিল এবং আপনি লগ ইন না হয়ে থাকেন।
আমি এটি 401 অননুমোদিত ফিরিয়ে আনতে চাই, যাতে ব্যবহারকারীরা লগ ইন করেছেন কি না তার ভিত্তিতে আমি বিভিন্ন ডেটা প্রদর্শন করতে পারি। আদর্শভাবে যদি ব্যবহারকারী লগ ইন থাকে আমি কন্ট্রোলারের ব্যবহারকারীর সম্পত্তি অ্যাক্সেস করতে সক্ষম হতে চাই যাতে আমি সেই সদস্যের সাথে সম্পর্কিত ডেটা ফিরিয়ে দিতে পারি।
আপডেট: যেহেতু প্রস্তাবনার কেউ নিচে আর কাজ হবে বলে মনে হচ্ছে (পরিচয় বা WebAPI পরিবর্তন) উপর একটি কাঁচা উদাহরণ সৃষ্টি Ive GitHub যা সমস্যা চিত্রিত করা উচিত নয়।