সত্ত্বা ফ্রেমওয়ার্ক 5 ডেটাবেস ফার্স্ট অ্যাপ্রোচ ব্যবহার করে আমি একটি এমভিসি 5 ওয়েব অ্যাপ্লিকেশন বিকাশ করছি । আমি ব্যবহারকারীদের প্রমাণীকরণের জন্য OWIN ব্যবহার করছি । নীচে আমার অ্যাকাউন্ট নিয়ামকের মধ্যে আমার লগইন পদ্ধতিটি দেখায়।
public ActionResult Login(LoginViewModel model, string returnUrl)
{
if (ModelState.IsValid)
{
var user = _AccountService.VerifyPassword(model.UserName, model.Password, false);
if (user != null)
{
var identity = new ClaimsIdentity(new[] { new Claim(ClaimTypes.Name, model.UserName), }, DefaultAuthenticationTypes.ApplicationCookie, ClaimTypes.Name, ClaimTypes.Role);
identity.AddClaim(new Claim(ClaimTypes.Role, "guest"));
identity.AddClaim(new Claim(ClaimTypes.GivenName, "A Person"));
identity.AddClaim(new Claim(ClaimTypes.Sid, user.userID)); //OK to store userID here?
AuthenticationManager.SignIn(new AuthenticationProperties
{
IsPersistent = model.RememberMe
}, identity);
return RedirectToAction("Index", "MyDashboard");
}
else
{
ModelState.AddModelError("", "Invalid username or password.");
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
আপনি আমি একটি তৈরি করছি দেখতে পারেন ClaimsIdentity এবং এটি বিভিন্ন দাবি যোগ করুন, তারপর তা ক্ষণস্থায়ী OWIN ব্যবহার AuthenticationManager সাইন ইন সম্পাদন করতে।
আমার যে সমস্যা হচ্ছে তা হ'ল আমি নিশ্চিত নই যে কীভাবে আমার বাকী অ্যাপ্লিকেশনগুলিতে কন্ট্রোলার বা রেজার ভিউজে দাবিগুলি অ্যাক্সেস করা যায়।
আমি এই টিউটোরিয়ালে তালিকাভুক্ত পদ্ধতির চেষ্টা করেছি
উদাহরণস্বরূপ, দাবিগুলির মধ্যে পাস করা মানগুলিতে অ্যাক্সেস পাওয়ার চেষ্টা করার জন্য আমি আমার কন্ট্রোলার কোডটিতে এটি চেষ্টা করেছিলাম, তবে, ব্যবহারকারীর দাবিগুলি নাল সমান
var ctx = HttpContext.GetOwinContext();
ClaimsPrincipal user = ctx.Authentication.User;
IEnumerable<Claim> claims = user.Claims;
সম্ভবত আমি এখানে কিছু মিস করছি।
হালনাগাদ
ডারিনের উত্তরের ভিত্তিতে, আমি তার কোডটি যুক্ত করেছি তবে এখনও আমি দাবিগুলিতে অ্যাক্সেস দেখতে ব্যর্থ হয়েছি। দয়া করে নীচে স্ক্রিনশটটি দেখান যা আমি যা দেখি তা পরিচয় দিয়ে দেখানো হয়েছে showing দাবিগুলি।