框架用的是springmvc框架,具体shiro配置的方法不详细介绍了。
1.通过session存放错误信息,jsp页面获取显示
这种方法比较简单快捷,直接在实现验证方法doGetAuthenticationInfo中添加session信息就可以了,然后在jsp页面判断显示。
添加session:
SecurityUtils.getSubject().getSession().setAttribute("message", "密码错误");
jsp获取session信息:
<%
String message = ""; if(request.getSession().getAttribute("message") != null) { message = request.getSession().getAttribute("message").toString(); } %><b><%=message %></b>
2.通过抛出shiro异常,在jsp识别根据异常显示提示信息,下面是一些常见登录验证中可能存在的异常:
UnknownAccountException 账号不存在异常
IncorrectCredentialsException 当输入密码错误会抛此异常 DisabledAccountException(帐号被禁用) LockedAccountException(帐号被锁定) ExcessiveAttemptsException(登录失败次数过多) ExpiredCredentialsException(凭证过期)java代码:
throw new UnknownAccountException();
jsp获取异常:
<%@ page language="java" import="com.hna.cums.bisu.security.MyFormAuthenticationFilter" %>
<%@ taglib prefix="c" uri="> <%@ taglib uri="" prefix="fn" %><%
String error = (String) request.getAttribute(MyFormAuthenticationFilter.DEFAULT_ERROR_KEY_ATTRIBUTE_NAME); %><b>
<c:set var="exp_type" value="<%=error %>"/> <c:if test="${fn:contains(exp_type,'UnknownAccountException')}"> 账号不存在! </c:if> </b>效果图: