如果说一个网站需要用户登录后才能浏览,那么用户登录控制就不可避免。但是对于几百个以上的页面,不可能每个页面都做一次登录验证。因此,这需要在母版页中进行登录控制,这样就可以使得每一个使用这个母版页的子页面在加载的时候都会自动的进行一次登录验证。首先是创建一个网站项目,添加母版页和子页面,子页面引用母版页,同时还要创建一个登录页面。然后中母版页的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. App Store不能下载一直等待中的两种解决办法

    1,重启手机,之后确认是否得到改善 2,重启不行,更改WiFi的dns为114.114.114.114或者223.5.5.5 或 223.6.6.6,再重启手机 ps:我是第二种方法

  2. 创建httpd启动脚本并加入启动列表开机启动

    第一步: cp /usr/local/apache2/bin/apachectl /etc/init.d/httpd   第二步: vim /etc/init.d/httpd 在第一行#!/bin/s ...

  3. linux配置加载顺序

    linux加载配置项时通过下面方式 首先 加载/etc/profile配置 然后 加载/ect/profile.d/下面的所有脚本 然后 加载当前用户 .bash_profile 然后 加载.bash ...

  4. Java三大特征之多态(三)

    面向对象编程有三大特性:封装.继承.多态. 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据.对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法. 继承 ...

  5. JSP作为img的src时chrome的bug

    废话不说,直接上代码. 新建一个jsp文件,名为img.jsp,代码如下: <%@page import="javax.imageio.ImageIO"%> <% ...

  6. 工作中使用seajs后的一些总结

    工作中用seajs一段时间了,小小地总结一下. 使用seajs五部曲: 1.布置你项目的目录结构 2.设置seajs的config项,我一般是单独一个js文件--> seajs-config.j ...

  7. sublime 控制台输入解决方案

    下面的配置是通过konsole控制台自带的参数解决了sublime不能输入的问题,这种方式适合任何一种语言 { "cmd": ["konsole"," ...

  8. C 语言的可变参数表函数的设计

    在c语言中使用变长参数最常见的就是下面两个函数了: int printf(const char *format, ...); int scanf(const char *format, ...); 那 ...

  9. (十一)boost库之多线程间通信

    (十一)boost库之多线程间通信 1.互斥锁 在编程中,引入了对象互斥锁的概念,来保证共享数据操作的完整性.每个对象都对应于一个可称为" 互斥锁" 的标记,这个标记用来保证在任一 ...

  10. 关于GPS偏移的基础知识

    转载地址 我们平时用到的地球坐标系统,叫做WGS84坐标,国家保密插件,也叫做加密插件或者加偏或者SM模组,其实就是对真实坐标系统进行人为的加偏处理,按照几行代码的算法,将真实的坐标加密成虚假的坐标, ...