예제 #1
0
        public async Task <ActionResult> Index(LoginViewModel model) //Login
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }


            var result = await repository.login(model);

            if (result.resultCode == 200 && !User.Identity.IsAuthenticated)
            {
                SessionAuthenticationModule sam       = (SessionAuthenticationModule)this.HttpContext.ApplicationInstance.Modules["SessionAuthenticationModule"];
                IClaimsPrincipal            principal = new Microsoft.IdentityModel.Claims.ClaimsPrincipal(new GenericPrincipal(new GenericIdentity(model.Email), null));

                List <User> user = new List <User>();
                user.Add(new Models.User {
                    Email = "*****@*****.**", Date = DateTime.Now
                });
                user.Add(new Models.User {
                    Email = "*****@*****.**", Date = DateTime.Now
                });
                user.Add(new Models.User {
                    Email = "*****@*****.**", Date = DateTime.Now
                });
                user.Add(new Models.User {
                    Email = "*****@*****.**", Date = DateTime.Now
                });
                string dummy = JsonConvert.SerializeObject(user);
                principal.Identities[0].Claims.Add(new Microsoft.IdentityModel.Claims.Claim(Microsoft.IdentityModel.Claims.ClaimTypes.Email, model.Email));
                principal.Identities[0].Claims.Add(new Microsoft.IdentityModel.Claims.Claim(Microsoft.IdentityModel.Claims.ClaimTypes.UserData, dummy));
                principal.Identities[0].Claims.Add(new Microsoft.IdentityModel.Claims.Claim(Microsoft.IdentityModel.Claims.ClaimTypes.Role, "Admin"));

                principal.Identities[0].Claims.Add(new Microsoft.IdentityModel.Claims.Claim("custom", "freecodespot custom claims"));

                var token = sam.CreateSessionSecurityToken(principal, null, DateTime.Now, DateTime.Now.AddMinutes(20), false);
                sam.WriteSessionTokenToCookie(token);

                //FormsAuthentication.SetAuthCookie(model.Email, false);

                return(RedirectToAction("Index", "Home", result.Data)); //redirect to login form
            }
            else if (User.Identity.IsAuthenticated)
            {
                return(RedirectToAction("Index", "Home"));
            }
            else
            {
                ModelState.AddModelError("", result.message);
            }

            return(View());
        }
예제 #2
0
        private static void WriteCookie(AMSAdmin user, string timeOffsetValue)
        {
            SessionAuthenticationModule sam = (SessionAuthenticationModule)
                                              HttpContext.Current.ApplicationInstance.Modules["SessionAuthenticationModule"];

            IClaimsPrincipal principal =
                new ClaimsPrincipal(new GenericPrincipal(new GenericIdentity(user.LogonName), null));

            principal.Identities[0].Claims.Add(new Claim("TimeOffset", timeOffsetValue));
            principal.Identities[0].Claims.Add(new Claim("AMSAdminID", user.UserID));
            principal.Identities[0].Claims.Add(new Claim("AMSAdminName", user.Name));

            SessionSecurityToken token = sam.CreateSessionSecurityToken(principal, null, DateTime.Now, DateTime.Now.AddMinutes(60), false);

            sam.WriteSessionTokenToCookie(token);
        }