কোনও ব্যবহারকারীকে API এ লগ ইন করার অনুমতি দিন
অনুরোধের সাথে আপনাকে একটি বৈধ ফর্ম প্রমাণীকরণ কুকি প্রেরণ করতে হবে। এই কুকিটি সাধারণত পদ্ধতিতে LogOn
কল করে ( ক্রিয়া) প্রমাণীকরণের সময় সার্ভারের মাধ্যমে প্রেরণ করা হয় [FormsAuthentication.SetAuthCookie
(দেখুন এমএসডিএন )।
সুতরাং ক্লায়েন্টের 2 টি পদক্ষেপ করা দরকার:
LogOn
ব্যবহারকারীর নাম এবং পাসওয়ার্ড প্রেরণ করে একটি ক্রিয়াতে একটি HTTP অনুরোধ প্রেরণ করুন। পরিবর্তে এই ক্রিয়াটি সেই FormsAuthentication.SetAuthCookie
পদ্ধতিতে কল করবে (যদি শংসাপত্রগুলি বৈধ হয়) যা প্রতিক্রিয়ায় ফর্মগুলি প্রমাণীকরণ কুকি সেট করবে।
[Authorize]
প্রথম অনুরোধে এটি পুনরুদ্ধার করা ফর্ম প্রমাণীকরণ কুকি প্রেরণ করে একটি সুরক্ষিত ক্রিয়ায় একটি HTTP অনুরোধ প্রেরণ করুন।
একটি উদাহরণ নেওয়া যাক। মনে করুন যে আপনার ওয়েব অ্যাপ্লিকেশনে 2 টি এপিআই কন্ট্রোলার সংজ্ঞায়িত রয়েছে:
প্রমাণীকরণ হ্যান্ডেল করার জন্য প্রথম একজন দায়ী:
public class AccountController : ApiController
{
public bool Post(LogOnModel model)
{
if (model.Username == "john" && model.Password == "secret")
{
FormsAuthentication.SetAuthCookie(model.Username, false);
return true;
}
return false;
}
}
এবং দ্বিতীয়টি সুরক্ষিত ক্রিয়াযুক্ত যা কেবল অনুমোদিত ব্যবহারকারীরা দেখতে পাবেন:
[Authorize]
public class UsersController : ApiController
{
public string Get()
{
return "This is a top secret material that only authorized users can see";
}
}
এখন আমরা এই এপিআই গ্রাহক একটি ক্লায়েন্ট অ্যাপ্লিকেশন লিখতে পারে। এখানে একটি তুচ্ছ কনসোল অ্যাপ্লিকেশন উদাহরণ (নিশ্চিত করুন যে আপনি Microsoft.AspNet.WebApi.Client
এবং Microsoft.Net.Http
নিউগেট প্যাকেজ ইনস্টল করেছেন ):
using System;
using System.Net.Http;
using System.Threading;
class Program
{
static void Main()
{
using (var httpClient = new HttpClient())
{
var response = httpClient.PostAsJsonAsync(
"http://localhost:26845/api/account",
new { username = "john", password = "secret" },
CancellationToken.None
).Result;
response.EnsureSuccessStatusCode();
bool success = response.Content.ReadAsAsync<bool>().Result;
if (success)
{
var secret = httpClient.GetStringAsync("http://localhost:26845/api/users");
Console.WriteLine(secret.Result);
}
else
{
Console.WriteLine("Sorry you provided wrong credentials");
}
}
}
}
এবং 2 টি এইচটিপি অনুরোধগুলি তারের দিকে কীভাবে দেখায় তা এখানে রয়েছে:
প্রমাণীকরণের অনুরোধ:
POST /api/account HTTP/1.1
Content-Type: application/json; charset=utf-8
Host: localhost:26845
Content-Length: 39
Connection: Keep-Alive
{"username":"john","password":"secret"}
প্রমাণীকরণের প্রতিক্রিয়া:
HTTP/1.1 200 OK
Server: ASP.NET Development Server/10.0.0.0
Date: Wed, 13 Jun 2012 13:24:41 GMT
X-AspNet-Version: 4.0.30319
Set-Cookie: .ASPXAUTH=REMOVED FOR BREVITY; path=/; HttpOnly
Cache-Control: no-cache
Pragma: no-cache
Expires: -1
Content-Type: application/json; charset=utf-8
Content-Length: 4
Connection: Close
true
সুরক্ষিত ডেটার জন্য অনুরোধ:
GET /api/users HTTP/1.1
Host: localhost:26845
Cookie: .ASPXAUTH=REMOVED FOR BREVITY
সুরক্ষিত ডেটার জন্য প্রতিক্রিয়া:
HTTP/1.1 200 OK
Server: ASP.NET Development Server/10.0.0.0
Date: Wed, 13 Jun 2012 13:24:41 GMT
X-AspNet-Version: 4.0.30319
Cache-Control: no-cache
Pragma: no-cache
Expires: -1
Content-Type: application/json; charset=utf-8
Content-Length: 66
Connection: Close
"This is a top secret material that only authorized users can see"