2

global.asax 中是否有任何事件在用户通过身份验证或授权后仅触发一次?每当用户进入应用程序时,无论他是否被授权,会话开始都会触发。

4

2 回答 2

1

在 global.asax 页面中添加此事件,用于检查当前用户是否登录并将用户详细信息存储在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);
            }
        }
    }
} 
于 2013-10-24T07:19:05.357 回答
0

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

于 2013-10-24T07:12:48.313 回答