企业级 商品管理系统登录校验

这篇里面来介绍一个完整的企业级登录(非Demo),本来想做一个完成的商品管理系统,后来做到登录完成后,觉得做下去意义不是很大,登录校验这里已经将所有的技术都包含了,做一个完整的系统无非就是多一些增删查改,登录这节已经全部都包含了,所以就只做到了登录这里。下面来介绍一下这个系统。

系统采用springmvc+mybatis+mysql完成

登录时对密码做校验,如果三次密码错误,帐号将被锁定。帐号如果被锁定,需要管理员来解锁帐号,下面来截图展示下系统。

用户管理

 

这是系统的展示页面,代码太多,这里就不将所有代码贴出来了,源代码已经上传到资源里面了,这里主要来介绍一下登录校验时所需注意的几个点。框架搭建这里也不做介绍,如果不会,可以参考前面的博客

1、资源项配置

<mvc:resources mapping="/resources/**" location="/resources/" />

mvc:resources在配置时,location指的是WebContent下,mapping指匹配到哪级目录,配置这个是来干什么的呢,这个是资源项配置,jsp页面中需要引用到css,js,图片等等,这个属于资源,不需要进行过滤,这个配置后,/resources/下的文件就不进行拦截,所以这里建议单独建立一个文件夹,将所有的资源放入

2、视图解析器配置

<bean
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/pages/" />
		<property name="suffix" value=".jsp" />
	</bean>

配置这个是当action返回页面时所查找的目录和给名称添加的后缀,controller代码如下

@RequestMapping("/loginpage")
	public String returnLogin() {
		return "login";
	}

这段代码就是action返回字符串login,经过视图解析器解析后,会进入到WebContent/pages/下,查找字符串login添加了.jsp后缀的视图,就是login.jsp,所以这里也是建议建立一个文件夹用来放置jsp页面。

3、登录校验

登录密码校验对一个需要权限验证的系统来说都是重点中的重点,所以我们在登录校验时一定要注意以下几点:

>字符串校验:对登录框中的字符做长度,非空等第一步校验

>黑名单校验:为防止sql注入式漏洞等等,我们应该对登录输入字符串做黑名单校验,例如登录所填写的字符中含有insert,update,delete,select等等时认为是非法登录

>密码加密:为防止数据泄密事件发生,对密码应该在数据库中进行加密存储,加密算法采用业界公认的算法,不要自定义算法

>登录次数限制:应该对输入的错误次数进行限制,当错误次数达到相应次数后,将该帐号锁定,使其不可登录

>登录日志:对每次登录应记录登录日志

以上步骤是业界工人的比较安全的做法,当然还可以在增加其它校验

4、url过滤器

为防止没有登录的帐号,通过url来直接访问需要登录权限才可以访问的页面,我们应该访问的url进行校验,校验时排除我们的资源项,比如js,css,图片等,这里没有什么要说的,过滤器代码和xml配置如下

/**   
 * 
 * @Package: com.cailei.cms.filter 
 * @author: cailei   
 * @date: 2018年7月3日 下午2:16:33 
 */
package com.cailei.cms.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.springframework.util.StringUtils;

/**
 * @ClassName: LoginFilter
 * @Description: TODO
 * @author: cailei
 * @date: 2018年7月3日 下午2:16:33
 */
public class LoginFilter implements Filter {

	private String excludedPages;
	private String[] excludedPageArray;

	@Override
	public void destroy() {
		// TODO Auto-generated method stub

	}

	@Override
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
			throws IOException, ServletException {
		HttpServletRequest req = (HttpServletRequest) request;
		String url = req.getServletPath();
		boolean isExcludedPage = isExcludedPage(url);

		if (isExcludedPage) {// 在过滤url之外
			chain.doFilter(request, response);
		} else {// 不在过滤url之外,判断session是否存在
			HttpSession session = ((HttpServletRequest) request).getSession();
			if (session == null || session.getAttribute("user") == null) {
				((HttpServletResponse) response).sendRedirect("/cms/v1/loginpage");
			} else {
				chain.doFilter(request, response);
			}
		}
	}

	@Override
	public void init(FilterConfig fConfig) throws ServletException {
		excludedPages = fConfig.getInitParameter("excludedPages");
		if (!StringUtils.isEmpty(excludedPages)) {
			excludedPageArray = excludedPages.split(",");
		}
		return;
	}

	/**
	 * 
	* @Title: isExcludedPage 
	* @Description: TODO 判断url是否在不过滤范围内 
	* @param path
	* @return boolean
	* @author cailei
	* @date 2018年7月3日下午7:09:55
	 */
	private boolean isExcludedPage(String path) {
		for (String page : excludedPageArray) {
			if (path.startsWith(page)) {
				return true;
			} else if (path.endsWith(page)) {
				return true;
			}
		}
		return false;
	}

}
<filter>    
		<filter-name>LoginFilter</filter-name>    
		<filter-class>    
			com.cailei.cms.filter.LoginFilter     
		</filter-class>    
		<init-param>    
			<param-name>excludedPages</param-name>    
			<param-value>/v1/loginpage,/v1/logincheck,/resources,.js,.css,.jsp</param-value>
		</init-param>    
	</filter>    
	<filter-mapping>    
		<filter-name>LoginFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

 

 

这就是一个系统在登录校验过程中应该注意的事项,代码上传到了我的下载里面了

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值