登录界面的设计比较特别,因为按正规程序来走界面是设计出来的,但我无意中在网上找到了上面这张很酷的图 片,找到了之后很想用它,便自己给它实现了一下,所以严格来说这个登录界面不是设计出来的,而是我用一些特别的手段做出来的,而且登录的验证也是很简单的。当然这是我个人的喜好,真正的项目是不可以这样做的,你会发现有很多显示的问题,而且验证也不是这么来走,一般都是采用数据库来实现。
这里我把图片设置为背景图片插入,然后在这个图片的“用户”后面那个小方框那里放上input控件,这样就覆盖了原来的用户输入框,用同样的方法搞定密码输入框和登录按钮。当然这里需要耐心去调input控件的坐标。登录按钮也可以采用该图片的usemap属性来定位,通过map的area属性把原来图片的登录按钮设置成图片热区,再用js把超链接设置成一个提交按钮,不过通过这种方式提交的话按回车键是没有用的,只能用鼠标点,这一点很让人不爽,所以还是建议用input覆盖吧。
接下来的关键问题是怎么进行登录验证?这里不是利用数据库来验证,而是采用了一种比较简单却实现起来不那么顺利的验证:Tomcat安全验证,即把登录Tomcat时的用户名和密码验证搬到了这个登录界面来了。具体怎么做呢?很简单,只要找到Tomcat的conf文件夹下的tomcat-users.xml文件,并修改里面的相关配置就可以,比如:
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename="admin"/>
<role rolename="tomcat"/>
<role rolename="role5"/>
<user username="jimmy" password="123456" roles="role5"/>
<user username="tomcat" password="tomcat" roles="tomcat"/>
<user username="admin" password="123456" roles="admin"/>
</tomcat-users>
然后在工程的web.xml最后面加上登录配置,这一段配置的格式是固定的,不能改:
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/WEB-INF/views/login.jsp</form-login-page>
<form-error-page>/WEB-INF/views/error.jsp</form-error-page>
</form-login-config>
</login-config>
最后设置login.jsp的表单提交的目标地址,以及用户名和密码的input控件上的名字,都必须按规定来:
<form method="POST" action="/j_security_check">
<input type="text" name="j_username">
<input type="text" name="j_password">
按照常规是这样走,但这时问题来了,点击登录按钮提交表单后它链接到了一个404页面去,提示找不到 /j_security_check这个地址。原因是约束没配,要在web.xml加入资源约束:
<security-constraint>
<web-resource-collection>
<web-resource-name>Protected Area</web-resource-name>
<url-pattern>/resources/*</url-pattern>
<url-pattern>/dic/*</url-pattern>
<url-pattern>/fee/*</url-pattern>
<url-pattern>/register/*</url-pattern>
<url-pattern>/index.jsp</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
<role-name>role5</role-name>
</auth-constraint>
</security-constraint>
<security-role>
<role-name>role5</role-name>
</security-role>
<security-role>
<role-name>admin</role-name>
</security-role>
404没了,但400却跑出来了,原来使用tomcat的这个安全验证首先必须要先访问一个页面,再使用这个登录机制它才会跳到原来这个页面,比如:首先访问 index.jsp,然后再访问login.jps,这个登录页面在登录成功后才会到index.jsp去,要不然就会有这个错误。也就是说,如果要利用 tomcat来实现验证,可以这样来走:先试着冲进门里面(index.jsp)去,冲不进去后再敲门(login.jsp),得到主人的许可后(验证成功)这一次才能名正言顺的进门,要不然它就不知道该去哪里了(400页面)。
问题是如果我们先进入index.jsp那么我们还要验证干吗?解决方法其实也很简单,利用tomcat自己的机制,把login.jsp放进WEB-INF里面去,因为tomcat不允许直接访问WEB-INF文件夹里面的文件,所以我们首先不会去login.jsp,也就是说会先去访问index页面,因为在tomcat的配置文件里最后面有这样一段话:
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
它把index页面当成了默认的加载页面,那么我们一进入tomcat它就自己把我们带到了index.jsp,相当于我们去冲门了,但是,很重要的一点是,在上面我们已经把index页面放进一个约束里面了,把它关联到登录页面,也就是所在每次访问index.jsp之前必须先访问login.jps,也就是把index.jsp保护起来了,这时它自然会再退出来敲门,而冲门这个动作是瞬间发生的,我们根本无法用肉眼看见,这样就把第一次访问index.jsp隐藏起来了,所以当显示login.jsp来到在我们面前时,index.jsp已经飘然的离开了。
登录流程:index.jsp(默认页面,不显示,被隐藏) -> login.jsp(登录成功) -> index.jsp(显示)
分享到:
相关推荐
本资料包“第11~13节 Axure登录验证的简单实现.zip”聚焦于在Axure中实现登录验证功能的教程,适用于初学者和有一定基础的学习者。以下将详细解析这个主题中的关键知识点。 首先,我们从第11节“第一次接触全局变量...
第13节 登录验证的简单实现.flv
在本文中,我们将深入探讨如何使用Ajax技术实现一个简单的登录验证功能。Ajax,即Asynchronous JavaScript and XML(异步JavaScript和XML),允许我们在不刷新整个网页的情况下与服务器进行交互,从而提供更流畅的...
通过查看这些文件,你可以更深入地了解Servlet如何处理登录验证的每个步骤。 在实际应用中,为了安全起见,密码通常不会明文存储,而是进行哈希处理。此外,还会使用session来跟踪已验证的用户,避免重复验证。而...
Vue+Flask实现简单的登录验证跳转的示例代码 本篇文章主要介绍了使用Vue和Flask实现简单的登录验证跳转的示例代码,具体来说是使用Vue作为前端框架,Flask作为后端框架,实现了一个简单的登录验证跳转功能。 首先...
通过以上步骤,我们可以创建一个使用jQuery和Ajax的简单登录验证系统。这个系统提高了用户体验,同时也展示了前端和后端的有效协作。在实际项目中,还需要结合其他技术和最佳实践,如错误处理、表单验证和用户反馈,...
在本例中,"springmvc框架的用户登录注册的简单实现"提供了一个初学者友好的教程,帮助学习者了解如何使用 Spring MVC 实现基本的用户登录和注册功能。 首先,我们来了解一下 MVC 设计模式。MVC 将应用程序分为三个...
【标题】"简单的登录注册页面 实现js...总的来说,实现一个简单的登录注册页面,需要掌握前端的JavaScript验证技术,后端的JSP编程,以及与数据库交互的SQL知识。同时,理解Web应用的基本架构和配置也是必不可少的。
通过分析这些文件,我们可以深入理解自动登录验证的具体实现步骤和代码逻辑。 总之,通过Servlet和Cookie的结合使用,我们可以实现Java Web应用的自动登录功能,提供用户友好的体验,同时也需注意安全性和隐私保护...
登录验证的逻辑主要集中在`login.jsp`文件中。该文件负责接收用户提交的数据,并对数据进行校验。 #### 1. 登录验证处理 ```jsp ;charset=GB2312" %> String uid = request.getParameter("uid"); String upwd =...
这个"Android代码-用户注册登录的简单实现.zip"压缩包可能包含了一个简单的示例项目,用于演示如何在Android应用中实现这一功能。 首先,让我们详细探讨一下Android用户注册登录的基本流程和涉及的技术点: 1. **...
在这个"一个简单的Codeigniter用户登录验证例子程序"中,我们将探讨如何在Codeigniter中实现用户认证和登录功能,这对于任何Web应用来说都是核心部分。这个程序包含了一些关键组件,如密码加密、session管理以及用户...
通过本文的介绍,我们了解到使用JavaScript实现登录验证和页面跳转的基本方法。具体技术点包括: - 使用`<form>`标签和`<input>`标签构建登录表单。 - 使用JavaScript函数进行用户名和密码的验证。 - 使用`window....
这里我们将深入探讨标题所提及的简单PHP实现的用户登录与验证类的代码,以及它如何处理关键的登录流程部分。 首先,我们要理解PHP类在用户验证中的作用。类是一种封装数据和功能的方式,它可以模拟现实世界中的对象...
在本练习中,我们将探讨如何实现企业邮箱的登录验证功能,这一功能对于任何Web应用程序,尤其是企业级应用来说,都是至关重要的。通过有效的登录验证,我们可以确保用户信息安全,防止未授权访问,保护企业的核心...
Struts2的拦截器机制允许我们在执行Action之前或之后插入额外的处理逻辑,如登录验证。我们可以自定义拦截器来实现复杂的功能,例如,确保用户已登录才能访问某些页面。 7. **持久化数据** 注册功能涉及到用户...
本源码包提供了SSO的简单实现,适用于学习和理解SSO的基本原理与实践。 首先,我们来看主要项目"SSOMain"。这个项目扮演了SSO系统的认证中心角色,通常被称为Identity Provider(IdP)。它负责用户的登录验证,一旦...
OpenID Connect则是在OAuth之上添加了身份验证层,提供了用户身份验证的能力。 3. **基于JWT(JSON Web Token)**:JWT是一种轻量级的身份验证和授权机制,可以安全地在客户端和服务端之间传输信息。用户登录后,...
### 单点登录原理与简单实现 #### 一、单系统登录机制 ##### 1. HTTP无状态协议 - **HTTP特性**:HTTP是HyperText Transfer Protocol(超文本传输协议)的缩写,是一种用于从Web服务器传输超文本到本地浏览器的...
1、利用JSP+Servlet实现简单的个人博客网站,主要功能包括用户注册(注册验证)、用户登录、发文、删除发文和查看发文。...(3)设计用户登录验证过滤器,当用户访问发文页面时,要求用户先进行登录,跳转到登录页面。