Web登陆模块的常见解决方案及一些注意事项

原创 2006年06月05日 11:22:00

1。总体结构

JSP页面显示输入页面,Servlet(或者JSP)处理出入(服务器端验证)并设置Session以及设置跳转。

2。登陆页面(JSP),实现客户端基础验证(JS),并进行安全设置:

2.1 图片代替提交按钮:

<a href="javascript:fnLogin(); " onMouseover="javascript: window.status='Login to ...'; return true" onMouseout="javascript: window.status='';return true"><img src="images/go.jpg" width="23" height="23" border="0" name="Image1" ></a>

2.2 输入完密码后回车代替提交

<input type="password" id="password" name="password" size="10" maxlength="20" onKeyPress="keyDown()">

这里,keyDown()的内容是:

function keyDown()
 {
         {var Key=event.keyCode; var nKey=0}
  
        if (Key==13)   
        {   
           fnLogin();                        
        }   
}

2.3 fnLogin()

fnLogin往往是用JS作Form Check之后的,设置Action(这个必须,因为上面是用图片链接作按钮的),然后提交的过程,如:

function fnLogin()
{
    if(fnValidate()==0)     return;
    document.logonForm.action="commonlogin.jsp";
    document.logonForm.submit();
}

而fnValidate()就是表单验证的函数了。

2.4 安全设置(错误转向以及Catch设置)

<%@page errorPage="error.jsp"%><% //Forward when exception %>
<%
response.setHeader("Cache-Control","no-store"); //HTTP 1.1
response.setHeader("Pragma","no-cache"); //HTTP 1.0
response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
%>

 2.5 其他小技巧:

i. DB violation:

if(str.indexOf("'")!=-1)
            throw new Exception();
 

ii. 设置光标位置:

<script language="JavaScript" type="text/javascript">
  <!--
    document.forms["logonForm"].elements["login"].focus();
    -->

iii. 返回上一页面

 

<A HREF="javascript:history.go(-1)" target="">Go Back</A>

 3。服务器端验证以及设置标签

3.1 通常设置一个Bean存放用户信息(与DB对应),如UserProfile,包括id, name ,role_type, pass 等等

3.2 关于密码:通常在数据库里的密码是加密过的。因此密码的验证有两种方式:一种是将用户输入的密码加密后,得到的密文与数据库里的密文直接比较;还有一种是将数据库里的密文解密后与用户输入作比较。我认为前者应该好一些。。

3.3 对输入的密码错误的(登陆失败),可以采用抛出异常的方式处理。这种方式的优点是在函数调用时,异常是可传递的(可传递的意思是说函数A调用B,B调用C,C抛出的异常在A里也会被捕捉,不知道这样说对不对。。。)。比如在主程序里有:

user =(UserProfile)userManager.doLogin(name, password);

对于登陆失败,doLogin函数只要简单地:

throw new Exception();

在主程序里,可以这样:

try
 {
 //check if valid login and password using doLogin() function
 }catch(Exception e)
  {
   System.out.println("catch called in commonlogin.jsp");
                 out.println(e.getMessage());
   // to display error message or dispatch for invalid login       }

 这种方法代替了返回boolean值的方法,我记得在一本书上看到过,这样的方法对效率是有好处的。

3.4 关于登陆成功/失败的标签

在上面主程序的例子中,catch的程序内容可以这么写:

System.out.println("catch called in commonlogin.jsp");
                 out.println(e.getMessage());
   // to display error message for invalid login
            out.println("<HTML>");
            out.println("<BODY>");
            out.println("<FORM name='passback' method='post' action='login.jsp' >");
            out.println("<input type='hidden' name='flag' value='true'>");
            out.println("<script language=javascript>  document.passback.submit();</script>");
            out.println("</BODY>");
            out.println("</HTML>");

这样写的特点是在设置标签(flag)时,用了表单形式,并且提交形式也比较特殊,很少见。好坏不知。

基于上面的说法,在登陆页面中如下类似的代码:

try{       
if(request.getParameter("flag") !=null)
{      
   catchFlag = request.getParameter("flag");
  if(catchFlag.equals("true"))
   {
  %>
   <script>alert("Invalid login.Try again");</script>
   <%
    }
  catchFlag = "false";
 }
}
catch(Exception e)
{
 System.out.println("the error is:" +e);
}

 其中,由于设置了<@page errorPage =".."%>,一旦发生异常,页面将自动跳转

 

 吃饭了,以后再写

登录模块设计思路

前言:   在互联网中,登录操作可以说是每个门户或者应用的必备流程,在这里讨论什么是登录,登录的价值是什么,好像有点多余。 但往往当业务扩展到一定程度,登录有时候反而是使操作流程复杂化的一个重要原因。...
  • Y9CLONG
  • Y9CLONG
  • 2016年03月11日 13:34
  • 1190

用户登录模块的实现过程

1.通过javascript来实现判断用户名和密码是否为空 function check(){ if(form3.user.value==""){ alert("请输入用户名!"); form3.u...
  • u012282037
  • u012282037
  • 2014年03月23日 19:50
  • 1039

登录模块相关代码分析

登录服务器 一.登录模块loginserver流程 1、主函数 (1)取到端口PORT和PORT2,分别是30001和8188 (2)新建服务器引导,服务器引导ServerBootstrap——服务器...
  • xiaopihai86
  • xiaopihai86
  • 2016年02月27日 18:00
  • 491

SSH系列一:实现用户登录模块

一、简介:用户登录模块,用户输入用户名和密码,对其身份进行验证 二、简单思路和方法(基于Java ssh框架实现)...
  • G1094044596
  • G1094044596
  • 2016年11月06日 22:38
  • 266

登录模块的设计

最近做完系统登录模块的重构,登录这块的核心在于安全的控制。下面通过本文来总结一下登录模块的设计实现,以及哪些方面需要注意。用户创建 密码保存需要做不可逆加密。即密码不能明文保存且即使是内部技术人员也无...
  • yzf913214
  • yzf913214
  • 2016年11月21日 09:28
  • 626

网站通用登录模块代码

1.HTML部分:     form id="form1" runat="server">     script src="../Script/jquery-v1.10.2.js" type="...
  • a497785609
  • a497785609
  • 2014年12月06日 10:49
  • 5638

9.用户模块:用户登录功能

用户登录业务: 1、用户登录页面点击登录校验用户名和密码不能为空! 2、登录失败页面不跳转,显示登录失败错误信息! 3、登录成功跳转到首页,首页显示登录人的姓名。 --------...
  • xiongwt
  • xiongwt
  • 2015年04月24日 23:46
  • 1212

角色权限管理系统(登录模块)

学了几个月的php终于有时间来做一个小项目了,做这个小项目之前也考虑了多方面的因素。最后决定做这个角色权限管理系统,一方面练练手一方面复习下web开发的相关知识。本来想弄成专栏的但是后来一想反正就是知...
  • chenwill3
  • chenwill3
  • 2013年11月06日 22:46
  • 2636

4 JSP+Servlet + JDBC 实现简单的登录验证模块

数据库设计+编码+运行调试   数据库准备 : 二话不说,上图 + JDBC 实现简单的登录验证模块" title="JSP+Servlet + JDBC 实现简单的登录验证模块" style...
  • hellolovelife
  • hellolovelife
  • 2015年10月09日 23:23
  • 2134

三层架构——三层登录类图与序列图

●前言       光说不会用,那就是一只纸老虎。现在看C#版本的代码三遍,第一遍宏观浏览,第二遍照着敲,第三遍对应U层、B层、D层去研究每一部分的代码都有什么作用,虽然现在还不是很透彻,但是已经迈...
  • zh15732621679
  • zh15732621679
  • 2015年12月31日 10:10
  • 2506
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Web登陆模块的常见解决方案及一些注意事项
举报原因:
原因补充:

(最多只允许输入30个字)