FineUI 官方论坛

标题: IHttpModule用户验证问题 [打印本页]

作者: ^_^    时间: 2013-5-29 15:23
标题: IHttpModule用户验证问题
我想通过实现IHttpModule增加用户登陆的验证,如果不登陆则重定向到登陆页,这样的话就需要在web.config中增加 <httpModules>      节点的内容,但不管是增加到 <add name="FineUIScriptModule" type="FineUI.ScriptModule, FineUI"/>的前面还是后面系统都不能正常使用,有没有遇到过类似问题的.
作者: sanshi    时间: 2013-5-29 15:28
你可以参考下FineUI的实现:FineUI\Business\ResourceManager\ScriptModule.cs
作者: ^_^    时间: 2013-5-29 15:31
sanshi 发表于 2013-5-29 15:28
你可以参考下FineUI的实现:FineUI\Business\ResourceManager\ScriptModule.cs

如果按这个实现是不是web.config中只配置自己实现的这个module就行了。
作者: ^_^    时间: 2013-5-29 15:34
HttpApplication ha = (HttpApplication)sender;
            string path = ha.Context.Request.Url.ToString();
            int n = path.ToLower().IndexOf("login.aspx");
            if (n == -1) //是否是登录页面,不是登录页面的话则进入{}
            {
            if (ha.Context.Session["UserId"] == null) //是否Session中有用户名,若是空的话,转向登录页。
            {
                ha.Context.Response.Redirect("~/Main/Login.aspx?source=" );//+ path);
            }
            }


            HttpApplication application = (HttpApplication)sender;
            HttpResponse response = application.Response;

            if (response.StatusCode == 302)
            {
                if (application.Request.Form["X_AJAX"] == "true")
                {
                    string redirectLocation = response.RedirectLocation;
                    List<HttpCookie> cookies = new List<HttpCookie>(response.Cookies.Count);
                    for (int i = 0; i < response.Cookies.Count; i++)
                    {
                        cookies.Add(response.Cookies);
                    }


                    response.ClearContent();
                    response.ClearHeaders();
                    for (int i = 0; i < cookies.Count; i++)
                    {
                        response.AppendCookie(cookies);
                    }
                    response.Cache.SetCacheability(HttpCacheability.NoCache);
                    response.ContentType = "text/plain";
                    response.Write(String.Format("window.location.href='{0}';", redirectLocation));
                }
            }



还是不行啊,在加载login.aspx页面的时候会报错,EXT为null

作者: sanshi    时间: 2013-5-29 16:28
为了更快的解决问题,请按照如下步骤创建重现问题的示例:
1. 到 https://fineui.codeplex.com/releases 下载FineUI空项目 EmptyProjectNet20_FineUI;
2. 基于空项目创建重现问题的示例,并打包上传。

注:涉及数据读取操作时,请在内存中模拟实现,不要连接数据库。
作者: ^_^    时间: 2013-5-29 19:19
不好意思,是误伤,问题出现
  if (ha.Context.Session["UserId"] == null) //是否Session中有用户名,若是空的话,转向登录页。
            {
                ha.Context.Response.Redirect("~/Main/Login.aspx?source=" );//+ path);
            }


应该为

if (ha.Context.Session == null)
                    return;
            if (ha.Context.Session["UserId"] == null) //是否Session中有用户名,若是空的话,转向登录页。
            {
                ha.Context.Response.Redirect("~/Main/Login.aspx?source=" );//+ path);
                return;
            }


如果没有红色部分则会出问题






欢迎光临 FineUI 官方论坛 (https://fineui.com/bbs/) Powered by Discuz! X3.4