Невозможно получить пользовательские идентификаторы претензий через mvc Owin Security - PullRequest
0 голосов
/ 21 февраля 2020

Я не могу перетащить свои пользовательские идентификаторы претензий с моего контроллера безопасности на мой домашний контроллер в MVC. Снимок экрана ниже показывает, что он не проходит через него. Единственное, о чем я могу думать, это то, что мой файл security.cs не запускается, когда я делаю прорыв в файле cs. У кого-нибудь есть какие-либо предложения?

Снимок экрана, показывающий, что заявления о личности не проходят: enter image description here

Снимок экрана, показывающий файл Security.cs.
enter image description here

Это мой код в моем домашнем контроллере:

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>
{

}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...