`
dr2tr
  • 浏览: 138256 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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

阅读更多

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 =".."%>,一旦发生异常,页面将自动跳转

 

 吃饭了,以后再写
分享到:
评论

相关推荐

    mod_auth_pubtkt:实用的 Web 单点登录 (SSO) 解决方案

    实用的 Web 单点登录 (SSO) 解决方案 文档 部署注意事项 由于票证中的“有效期至”字段必须是绝对时间(UNIX 时间戳),因此票证生成登录服务器和票证验证 Web 服务器的时钟需要或多或少同步。 票证的生命周期越长...

    将博CMS企业版源码 JumbotCmsQiYe.rar

    1、将解决方案从Debug改为Release,然后发布到一个指定的文件夹(如何发布VS解决方案属于基础知识,自己百度吧)。 1、把根目录Web.config文件中的appSettings的CategoryTable值改为0(测试时可以改为1\2\) 2、...

    asp.net知识库

    .net 2.0 访问Oracle --与Sql Server的差异,注意事项,常见异常 Ado.net 与NHibernate的关系? 动态创建数据库 SQL Server数据库安全规划全攻略 .net通用数据库访问组件SQL Artisan应用简介1 在Framework1.0下...

    2017最新老男孩MySQL高级专业DBA实战课程全套【清晰不加密】,看完教程月入40万没毛病

    21-有关MySQL高可用注意及常见故障讲解mp4 22-MySQL集群及高可用的更多思路方案引子mp4 23-常见MySQL集群高可用架构讲座01.mp4 24-常见MySQL集群高可用架构讲座02.mp4 25-常见MySQL集群高可用架构讲座03.mp4 26-常见...

    Java毕业设计-基于jspm开发的超市库存管理系统--论文-附源代码和说明文档.rar

    说明文档则对系统的功能、使用方法以及开发过程中的注意事项进行了详细的介绍,为用户的使用和开发提供了有力的支持。 总的来说,本资源是一个功能强大、易于使用的超市库存管理系统,适合作为Java毕业设计项目或...

    近乎v5.0源码 Almostv50.rar

    源码版安装之前,请使用Vs2015或以上版本以管理与身份打开项目, 您需要重新生成解决方案(管理员身份打开项目),安装版不需要重新生成解决方案 1.登录您的服务器,建立或者选择一个目录,将安装包./web 目录中的...

    将博CMS企业版V1.7.3源码 JumboECMS173.rar

    1、将解决方案从Debug改为Release,然后发布到一个指定的文件夹(如何发布 VS解决方案属于基础知识,自己百度吧)。 2、把根目录Web.config文件中的appSettings的CategoryTable值改为0(测试时 可以改为1\2\) 3...

    DES算法实现 DES.rar

    1、将解决方案从Debug改为Release,然后发布到一个指定的文件夹(如何发布 VS解决方案属于基础知识,自己百度吧)。 2、把根目录Web.config文件中的appSettings的CategoryTable值改为0(测试时 可以改为1\2\) 3...

    springboot参考指南

    解决自动配置问题 ii. 62.2. 启动前自定义Environment或ApplicationContext iii. 62.3. 构建ApplicationContext层次结构(添加父或根上下文 iv. 62.4. 创建一个非web(non-web)应用 ii. 63. 属性&配置 i. 63.1. ...

    计算机专业毕设ASP.NET通用作业批改系统设计(源代码+论文).rar

    **计算机专业毕设ASP.NET通用...**注意事项:** 1. 本资源中的源代码和文档仅供参考,使用时需遵守相关的版权和知识产权法律法规。 2. 在使用过程中如遇到问题,请及时与我们联系,我们将竭诚为您提供技术支持和服务。

    百度地图 功能模块完整版 开发指南

    (6)其他注意事项请参考【CloudSearchDemoViewController.mm文件内的注释部分】; (7)LBS.云检索使用方法请参考开发指南“LBS云服务”部分; (8)详细了解LBS.云,欢迎访问:...

    课程网站管理系统.doc

    ……………………………………...8 §2.3 安装及注意事项………………………………...8 第三章 开发过程……………………...……………………….…10 §3.1 设置服务器….………………...…………………10 §3.2 ...

    计算机专业毕设精选-ASP.NET网上书店(源程序+论文+答辩PPT).rar

    同时,该系统也适用于实际应用,可以作为小型网上书店的解决方案。 **功能特点:** 1. **用户友好的界面**:系统采用了现代化的设计风格,界面简洁、美观,易于操作。用户可以快速浏览图书信息,进行搜索、筛选和...

    八度志愿服务管理系统(bAduVMS)

    bAduVMS 是一款基于PHP+mysql技术架构的志愿服务管理系统,积十年经验精心策划研发,专为公益组织提供志愿服务工作无纸化办公系统解决方案,不仅能够帮助现有的网站进行资讯系统升级换代,也能够助力民间公益组织...

    php网络开发完全手册

    15.5 常见问题与解决方案 259 15.6 小结 261 第16章 数据库中的程序逻辑 262 16.1 数据库程序逻辑与PHP程序逻辑的分体 16.1 设计原则 262 16.2 数据库中的程序逻辑与数据的关系 262 16.3 存储过程的设计 263 16.3.1 ...

    易想商城系统源码v1.1

    模板和标签管理(管理网站页面更加方便)☆自定义标签管理(让你的网站更加个性化)☆上传图片管理(能有效的节约空间)☆商品评论管理☆数据管理(能够有效的保障自己的数据安全)☆登陆日志模快五、注意事项配置web....

    phpStudy 2016.10.31 再次更新,支持自定义php版本

    11. IIS7/8快速安装PHP及注意事项 参照:http://www.phpstudy.net/a.php/182.html 12. 如何禁止或允许站点目录列表 参照:http://www.phpstudy.net/a.php/192.html 13. 自带Ftp Server如何使用 参照:...

    phpstudy-x64.zip

    11. IIS7/8快速安装PHP及注意事项 参照:http://www.phpstudy.net/a.php/182.html 12. 如何禁止或允许站点目录列表 参照:http://www.phpstudy.net/a.php/192.html 13. 自带Ftp Server如何使用 参照:...

    Access+2000中文版高级编程

    12.3 创建及完善简单的数据访问页 369 12.3.1 数据访问页的字段列表 369 12.3.2 添加超级链接 370 12.3.3 在数据访问页中使用表达式 374 12.3.4 使用绑定的组合框和列表框 375 12.3.5 使用主题格式化 378 ...

    Access 2000中文版高级编程(part1)

    Access2000中文版高级编程 目录 第一部分 编程基础 1 第1章 宏与代码 3 1.1 何时使用代码代替宏 4 1.1.1 何时用宏 4 1.1.2 何时用代码 4 1.2 宏到代码的转换 5 ...15.5 使用API调用的注意事项 479 15.5.1 ...

Global site tag (gtag.js) - Google Analytics