如果说一个网站需要用户登录后才能浏览,那么用户登录控制就不可避免。但是对于几百个以上的页面,不可能每个页面都做一次登录验证。因此,这需要在母版页中进行登录控制,这样就可以使得每一个使用这个母版页的子页面在加载的时候都会自动的进行一次登录验证。首先是创建一个网站项目,添加母版页和子页面,子页面引用母版页,同时还要创建一个登录页面。然后中母版页的Page_Load方法中调用验证登录的函数IsLogin

protected void IsLogin() {
            try
            {

                if (Session["userinfo"] == null)
                {
                    Response.Redirect("/User/WebUserLogin.aspx");
                }
            }
            catch (Exception ex)
            {
                Response.Redirect("/User/WebUserLogin.aspx");
            }
        }

在这个验证函数中,主要是查看会话中是否保存了用户信息来判断用户是否中登录状态下访问子页面了。如果有用户信息,那么就通过验证,如果没有,就转到登录页面,在登录页面中,对登录按钮做如下操作

try {
                string username = Request["TxtUserName"].Trim();
                string pwd = Helper.MD5Encrypt(Request["TxtUserPwd"].Trim());
                User userinfo = usermanage.UserLogin(username, pwd);
                if (userinfo != null)
                {
                    Session["userinfo"] = userinfo;
                    Response.Redirect("~/Index.aspx");
                }
                else {
                    this.ClientScript.RegisterStartupScript(this.GetType(), "login", "<script type='text/javascript'>artDialog({ content: '请输入正确的用户名和密码!', lock: true, title: '提示' });</script>");
                }
            }catch{

            }    

其中的UserLogin方法用于查询数据库是否有对应的用户名和密码

登录页面的UI

<script>
function onKey() {
if (window.event.keyCode == 13) {
document.getElementById("LinkButtonUserLogin").click();
}
}
function checkform() {
var username = $('#<%=TxtUserName.ClientID%>').val();
var psd = $('#<%=TxtUserPwd.ClientID%>').val();
if (username == "") {
artDialog({ content: '用户名不能为空!', lock: true, title: '提示' });
return false;
}
if (psd == "") {
artDialog({ content: '密码不能为空!', lock: true, title: '提示' });
return false;
}

}
</script>

......<div class="login-main">
                    <div style="color: red">
                        <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="请输入用户名" ControlToValidate="TxtUserName" Display="Dynamic" ValidationGroup="ValidUserLogin"></asp:RequiredFieldValidator>
                    </div>
                    <asp:TextBox ID="></asp:TextBox>
                    <asp:TextBox runat="></asp:TextBox>
                    <asp:LinkButton ID="LinkButtonUserLogin" name="LinkButtonUserLogin" runat="server" OnClientClick="return checkform();" OnClick="LinkButtonUserLogin_Click" ValidationGroup="ValidUserLogin"></asp:LinkButton>
                    <%--<a href="#" runat="server" onclick=""></a>--%>
                </div>

asp.net 一个简单的登录控制的更多相关文章

  1. 第四章 .net core做一个简单的登录

    项目目标部署环境:CentOS 7+ 项目技术点:.netcore2.0 + Autofac +webAPI + NHibernate5.1 + mysql5.6 + nginx 开源地址:https ...

  2. jmeter 压力测试(一)一个简单的登录

    写在最前面,之所以记录这个最最简单的http的登录,是因为捣鼓了一天,真的是找错也找不错了,后来请教的同事,重新写了一个ok了,最后发现竟然是因为[http信息头]写的有问题,简直是!!醉了 如下,这 ...

  3. 7. Swift 基于Xmpp和openfire实现一个简单的登录注册

    1. 基本步骤:首先导入Xmpp框架,配置环境 ->由于我们使用的是OC的Xmpp框架,再进行Swift开发时需要进行桥接. 具体方法就是创建一个基于c的.h的头文件,然后将我们需要编译OC的语 ...

  4. node.js 实现一个简单的登录拦截器

    拦截器在web开发中随处可见,比如站点的管理后台,不说所有人都能进入,所以就需要做一个拦截器并友好的跳转到提示页. 下面我们简单实现一种,判断用户是否登录成功,登录不成功的用户自动重定向到登录页面. ...

  5. go语言实现一个简单的登录注册web小程序

    最近学习golang也有一段时间了,基础差不多学了个大概,因为本人是java程序员,所以对web更感兴趣.根据<go web编程>中的例子改编一个更简单的例子,供新手参考,废话不多说,上菜 ...

  6. Unity 3D 一个简单的角色控制脚本

    之所以写这个脚本,是因为我想起了我还是新手的时候,那时为了一个角色控制脚本百度了半天还是一无所获,因为看不懂啊,都写的太高级了 希望这个脚本能够帮助那些 像曾经的我一样迷失于代码中的新手们能够清晰的理 ...

  7. c#利用三层架构做一个简单的登录窗体

    就个人而言,三层架构有点难理解,不知道该如何下手,各层与各层之间怎么调用 最近一直在研究三层架构,经过网上学习与多方打听写一下自己的心得.有不足之处,可以评论和私聊探讨 言归正传: 三层架构(3-ti ...

  8. CSS样式案例(2)-制作一个简单的登录界面

    首先来张完工的效果图. 一.html文件如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8 ...

  9. AJAX - 实现一个简单的登录验证

    /**Ajax 编写流程 * 1.创建 XHR (XMLHttpRequest)对象 var xmlHttpReq = false; // var xmlHttpReq = ""; ...

随机推荐

  1. CF 338 D GCD Table(CRT)

    转载请注明出处,谢谢http://blog.csdn.net/ACM_cxlove?viewmode=contents    by---cxlove 给定一个序列,a[1 ..k],问是否存在(i , ...

  2. Babel6.x 转换ES6

    本文介绍Babel6.x的安装过程~ 首先呢,可以使用Babel在线转换 https://babeljs.io/repl/ 然后进入主题:安装Babel(命令行环境,针对Babel6.x版本) 1.首 ...

  3. FFMPEG中最关键的结构体之间的关系

    FFMPEG中结构体很多.最关键的结构体可以分成以下几类: a)        解协议(http,rtsp,rtmp,mms) AVIOContext,URLProtocol,URLContext主要 ...

  4. js/css 检测移动设备方向的变化 判断横竖屏幕

    js/css 检测移动设备方向的变化 判断横竖屏幕 方法一:用触发手机的横屏和竖屏之间的切换的事件 window.addEventListener("orientationchange&qu ...

  5. Android图片下载到本地,系统图库不显示

    可能大家都知道我们下载图片到Android手机的时候,然后调用系统图库打开图片,提示"找不到指定项". 那是因为我们插入的图片还没有更新的缘故,所以只要将图片插入系统图库,之后发条 ...

  6. Eclipse运行Tomcat7源码

    1. 各环境版本: jdk1.6.0_45 (亲测jdk1.7.0_07会有问题,不要用1.7版本的) apache-ant-1.9.4 apache-tomcat-7.0.61-src 2. 安装a ...

  7. psycopg2关于undefined symbol: lo_truncate64解决方法

    今天,在centos6.5下安装psycopg2,利用Python连接PostgreSQL数据库的时候,出现了一个undefined symbol: lo_truncate6的错误: django.c ...

  8. MYSQL 转换字符集的 2 种方法

    方法 1. convert(expression using character_set); convert('123456789' using ascii); 方法 2. cast(expresio ...

  9. ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小 错误分析

    目录(?)[+] 1. 问题起因 最近在进行Oracle的一些操作时,总会遇到这个错误:  ORA-06502: PL/SQL: 数字或值错误 :  字符串缓冲区太小,错误如下: ORA-00604: ...

  10. tomcat------https单向认证和双向认证

     一.https分为单向认证和双向认证: 单向认证就是说,只有客户端使用ssl时对服务器端的证书进行认证,也就是说,客户端在请求建立之前,服务器端会向客户端发送一个证书,一般情况下,这种证书都是由自己 ...