PDA

View Full Version : سوال: افزودن claim فقط برای کاربرانی که پرداخت موفق داشته اند



bftarane
یک شنبه 26 فروردین 1397, 15:41 عصر
سلام
من تازه با claim آشنا شدم
می خواستم بدونم چطور می تونیم یک claim از نوع Expiration رو در اکشن پرداخت اضافه کنیم، مثال هایی که من دیدم همون اول موقع ثبت نام کاربر جدید این کار رو انجام می دادن.
ولی من نمی خوام برای همه کاربران claim اضافه بشه، می خوام فقط برای کاربرانی که پرداخت موفق داشته باشن این کار انجام بشه.
فراموش کردم بگم با mvc5 کار می کنم نه core.

public ActionResult Pay()
{
if (پرداخت موفق)
{
//چطور اینجا claim رو اضافه کنم به کاربر؟
}

}

ممنون

Moien Tajik
یک شنبه 26 فروردین 1397, 18:26 عصر
شما ApplicationUserManager رو به Controller تون Inject کنید ; شبیه به AccountController پیشفرض Identity ، و با AddClaim یا AddClaimAsync ، اون Claim هایی که میخواید رو برای اون کاربر بخصوص اضافه کنید :



public class HomeController : Controller
{
private ApplicationUserManager _userManager;


public HomeController()
{
}


public HomeController(ApplicationUserManager userManager)
{
UserManager = userManager;
}


public ApplicationUserManager UserManager
{
get
{
return _userManager ?? HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
}

private set
{
_userManager = value;
}
}


public ActionResult SomeMethodToAddClaim()
{
if (!User.Identity.IsAuthenticated) return View();


// Current User ID
var userID = User.Identity.GetUserId();
var someTestClaim = new Claim("SomeKey", "SomeValue");
UserManager.AddClaim(userID, someTestClaim);


return View();
}
}