0

Hey I have generated template with microsoft login. I want to add identity when you visit one page. My code:

            int OsCislo = //Gets params from model
            string name = //Gets params from model
            List<System.Security.Claims.Claim> MyClaim = new List<System.Security.Claims.Claim>()
            {
                new System.Security.Claims.Claim (System.Security.Claims.ClaimTypes.Name, name),
                new System.Security.Claims.Claim (System.Security.Claims.ClaimTypes.Role, OsCislo.ToString())
            };
            System.Security.Claims.ClaimsIdentity identity = new System.Security.Claims.ClaimsIdentity();
            identity.AddClaims(MyClaim);
            User.AddIdentity(identity);
            ///Find identity and read from it

What I am trying to do:
1. Get Data
2. Make List of Claims where I put my data
3. Make new identity and feed it Claims.
4. Add identity to existing user
5. Find That Identity throught User and get data from Claims.

1 Answer 1

1

Solved it! If somebody want code here it is:

            int CisloG = Model.Where(s => s.UserName.Contains(name)).ToArray().First().One;
            name = Model.Where(s => s.UserName.Contains(name)).ToArray().First().Two + " " + Model.Where(s => s.UserName.Contains(name)).ToArray().First().Three;
            List<Claim> MyClaim = new List<System.Security.Claims.Claim>()
            {
                new Claim (ClaimTypes.GivenName, name),
                new Claim (ClaimTypes.NameIdentifier, CisloG.ToString()),
                new Claim (ClaimTypes.Email, User.Identity.Name)
            };
            ClaimsIdentity identity = new ClaimsIdentity();
            identity.AddClaims(MyClaim);
            User.AddIdentity(identity);
            ///Getting data
            var Name = User.FindAll(ClaimTypes.GivenName).ToList().ElementAt(1).Value;
            var OsCislo = User.FindAll(ClaimTypes.NameIdentifier).ToList().ElementAt(1).Value;
            var Email = User.FindAll(ClaimTypes.Email).ToList().ElementAt(0).Value;
            Console.WriteLine(Name + "(" + OsCislo + ") " + Email);

If sombody wants to know what it does just add commment.

Sign up to request clarification or add additional context in comments.

Comments