FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

本论坛已关闭(禁止注册、发帖和回复)
请移步 三石和他的朋友们

FineUI首页 WebForms - MVC & Core - JavaScript 常见问题 - QQ群 - 十周年征文活动

FineUI(开源版) 下载源代码 - 下载空项目 - 获取ExtJS - 文档 在线示例 - 版本更新 - 捐赠作者 - 教程

升级到 ASP.NET Core 3.1,快、快、快! 全新ASP.NET Core,比WebForms还简单! 欢迎加入【三石和他的朋友们】(基础版下载)

搜索
查看: 2407|回复: 5
打印 上一主题 下一主题

IHttpModule用户验证问题

[复制链接]
跳转到指定楼层
楼主
发表于 2013-5-29 15:23:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我想通过实现IHttpModule增加用户登陆的验证,如果不登陆则重定向到登陆页,这样的话就需要在web.config中增加 <httpModules>      节点的内容,但不管是增加到 <add name="FineUIScriptModule" type="FineUI.ScriptModule, FineUI"/>的前面还是后面系统都不能正常使用,有没有遇到过类似问题的.
沙发
发表于 2013-5-29 15:28:43 | 只看该作者
你可以参考下FineUI的实现:FineUI\Business\ResourceManager\ScriptModule.cs
板凳
 楼主| 发表于 2013-5-29 15:31:26 | 只看该作者
sanshi 发表于 2013-5-29 15:28
你可以参考下FineUI的实现:FineUI\Business\ResourceManager\ScriptModule.cs

如果按这个实现是不是web.config中只配置自己实现的这个module就行了。
地板
 楼主| 发表于 2013-5-29 15:34:49 | 只看该作者
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
5#
发表于 2013-5-29 16:28:53 | 只看该作者
为了更快的解决问题,请按照如下步骤创建重现问题的示例:
1. 到 https://fineui.codeplex.com/releases 下载FineUI空项目 EmptyProjectNet20_FineUI;
2. 基于空项目创建重现问题的示例,并打包上传。

注:涉及数据读取操作时,请在内存中模拟实现,不要连接数据库。
6#
 楼主| 发表于 2013-5-29 19:19:29 | 只看该作者
不好意思,是误伤,问题出现
  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 官方论坛 ( 皖ICP备2021006167号-1 )

GMT+8, 2024-11-25 22:42 , Processed in 0.062241 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表