用户通过身份验证后是否会触发事件?

时间:2013-10-24 06:34:30

标签: c# asp.net global-asax

global.asax中是否有任何事件在用户通过身份验证或授权后才会被触发一次?无论用户是否获得授权,只要用户进入应用程序,会话就会启动。

2 个答案:

答案 0 :(得分:1)

在global.asax页面中添加此事件,以便检查当前用户是否为logedin并将用户详细信息存储在httpconext.current.user中。

protected void Application_AuthenticateRequest(Object sender, EventArgs e)
{
    if (HttpContext.Current.User != null)
    {
        if (HttpContext.Current.User.Identity.IsAuthenticated)
        {
            if (HttpContext.Current.User.Identity is FormsIdentity)
            {
                FormsIdentity id =
                    (FormsIdentity)HttpContext.Current.User.Identity;
                FormsAuthenticationTicket ticket = id.Ticket;

                // Get the stored user-data, in this case, our roles
                string userData = ticket.UserData;
                string[] roles = userData.Split(',');
                HttpContext.Current.User = new GenericPrincipal(id, roles);
            }
        }
    }
} 

答案 1 :(得分:0)

每个请求都会触发AuthenticateRequest,允许您准备HttpContext以执行请求。