Nuovo all'autenticazione OWIN e difficoltà a creare i miei tipi di reclami owin.Aggiungi tipi di reclamo personalizzati
Ecco la cosa. Devo aggiungere attestazioni personalizzate come "GroupID" in modo da poter accedere facilmente alle diverse pagine.
ho fatto qualcosa di simile nella mia Entrata
public ActionResult Login(LoginViewModel model, string returnUrl)
{
UserViewModel userModel = new UserViewModel();
if (!ModelState.IsValid)
{
return View(model);
}
if(CommonHelper.ValidateADUser(model.Username,model.Password))
{
UserViewModel curUser = userModel.GetUserDetails(model.Username);
if (curUser != null)
{
var claims = new List<Claim>();
claims.Add(new Claim(ClaimTypes.WindowsAccountName, curUser.Username));
claims.Add(new Claim(ClaimTypes.Name,curUser.Fullname));
claims.Add(new Claim(ClaimTypes.Role, ""));
claims.Add(new Claim("GroupID", curUser.UserGroupID.ToString()));
var id = new ClaimsIdentity(claims, DefaultAuthenticationTypes.ApplicationCookie);
var ctx = Request.GetOwinContext();
AuthenticationManager.SignIn(id);
return RedirectToAction("Index", "Home");
}
}
else
{
ModelState.AddModelError("", "Invalid login attempt.");
}
return View(model);
}
Nel mio login parziale ho cercato di ottenere il valore facendo questo
public ActionResult _LoginPartial()
{
var identity = (ClaimsIdentity)User.Identity;
TempData["curUserFullName"] = identity.FindFirst(ClaimTypes.Name).Value;
string s= identity.FindFirst("GroupID").Value;
return PartialView();
}
posso ottenere il nome utente e il nome completo senza alcun problema ma l'id di gruppo causa un errore nullo dell'oggetto.
Sperando che qualcuno possa spingermi alla risposta corretta.
sei in grado di vedere se la nuova richiesta viene aggiunta alla tabella DB UserClaims? – Jay
Dove si trova la tabella derc? – TheProvost
dipende dall'app, di solito qualcosa come ASPNetUserClaims nel DB dell'applicazione. – Jay