Я не могу перетащить свои пользовательские идентификаторы претензий с моего контроллера безопасности на мой домашний контроллер в MVC. Снимок экрана ниже показывает, что он не проходит через него. Единственное, о чем я могу думать, это то, что мой файл security.cs не запускается, когда я делаю прорыв в файле cs. У кого-нибудь есть какие-либо предложения?
Снимок экрана, показывающий, что заявления о личности не проходят:
Снимок экрана, показывающий файл Security.cs.
Это мой код в моем домашнем контроллере:
var identity = (ClaimsPrincipal) Thread.CurrentPrincipal;
var name = identity.Claims.Where(c => c.Type == ClaimTypes.Name)
.Select(c => c.Value).SingleOrDefault();
var s = "";
Models.AttendanceViewModel avm = new Models.AttendanceViewModel();
GratManager am = new GratManager();
avm.attendances = am.GetAttendances(s);
return View(avm);
Это мой код в моем контроллере безопасности: publi c ActionResult CheckUser (строка returnURL) {ViewBag.ReturnURL = returnURL; GRATT.BLL.GratManager gm = new GRATT.BLL.GratManager ();
string username = Request.Form["username"];
string password = Request.Form["password"];
GRATT.DTO.AppUser au = gm.GetUser(username, password);
if( au != null)
{
if(Membership.ValidateUser(Request.Form["username"], Request.Form["password"]))
{
var identity = new ClaimsIdentity(new[]
{
new Claim("Username", au.Username),
new Claim("UserId", au.UserId.ToString()),
new Claim("DisplayName", au.Name.Forename, au.Name.Surname),
new Claim("SiteCode", au.Site.ToLower().ToString())
}, "[GrattAuditTool]_Authentication");
var ctx = Request.GetOwinContext();
var authManager = ctx.Authentication;
foreach (GRATT.DTO.UserRole r in au.Roles)
{
identity.AddClaim(new Claim("Role", r.Role.Name));
}
authManager.SignIn(identity);
return RedirectToAction("Index", "Home");
}
}
return RedirectToAction("Login", "Security");
}
Это мой файл Security.cs, но, как я уже сказал, я не думаю, что это проблема, но когда я ставлю точки останова в это пропускает это.
public class GratAuditToolClaimsPrincipal : ClaimsPrincipal
{
public GratAuditToolClaimsPrincipal(ClaimsPrincipal p) : base(p)
{
}
public string DisplayName
{
get
{
return FindFirst("DisplayName").Value;
}
}
public string UserID
{
get
{
return FindFirst("UserID").Value;
}
}
public string SiteCode
{
get
{
return FindFirst("SiteCode").Value;
}
}
public List<string> Roles
{
get
{
List<string> roles = new List<string>();
foreach (string s in FindAll("Role").Select(x => x.Value))
{
roles.Add(s);
}
return roles;
}
}
}
public abstract class GratAuditToolController : Controller
{
public GratAuditToolClaimsPrincipal CurrentUser
{
get
{
return new GratAuditToolClaimsPrincipal(User as ClaimsPrincipal);
}
}
}
public abstract class GratAuditToolViewPage<TModel> : WebViewPage<TModel>
{
public GratAuditToolClaimsPrincipal CurrentUser
{
get
{
return new GratAuditToolClaimsPrincipal(User as ClaimsPrincipal);
}
}
}
public abstract class GratAuditToolViewPage : GratAuditToolViewPage<dynamic>
{
}
}