コード例 #1
0
 public void ClearImpersonation()
 {
     while (ImpersonationStack.Count() != 0)
     {
         Disimpesonate();
     }
 }
コード例 #2
0
        public string GetRealUserName()
        {
            var result = ImpersonationStack.LastOrDefault();

            if (result == null)
            {
                result = _CurrentUser.Identity.Name;
            }
            return(result);
        }
コード例 #3
0
        private void setCurrentUser(string userName)
        {
            SessionStateSection section = ConfigurationManager.GetSection("system.web/sessionState") as SessionStateSection;

            var        userData  = ImpersonationStack.ToStringAsCollection() ?? "";
            var        ticket    = new FormsAuthenticationTicket(1, userName, DateTime.Now, DateTime.Now + section.Timeout, true, userData);
            string     encTicket = FormsAuthentication.Encrypt(ticket);
            HttpCookie faCookie  = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket);

            _Context.Response.Cookies.Add(faCookie);
        }
コード例 #4
0
 public bool IsImpersonating()
 {
     return(ImpersonationStack.Any());
 }
コード例 #5
0
 public void Impersonate(string userName)
 {
     ImpersonationStack.Push(_CurrentUser.Identity.Name);
     setCurrentUser(userName);
 }
コード例 #6
0
        public void Disimpesonate()
        {
            var userName = ImpersonationStack.Pop();

            setCurrentUser(userName);
        }