使用actionerror做失败登录验证
2018-07-04 02:08:47来源:博客园 阅读 ()
一. 登录页面中放置如下代码:
<h4>员工登录</h4>
<div style="color:red">
<s:actionerror/>
</div>
如果登录出现异常,就会将你设置的异常信息反馈出来.
二. 这个<s:actionerror/>标签需要jsp的标签库支持,代码如下:
<%@ taglib uri="/struts-tags" prefix="s" %>
三. struts-tags标签库使用struts的filter进行过滤,需要在web.xml中过滤.jsp文件
代码如下:
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
最后actionerror需要在验证登录的时候,接收抛出的异常
如果抛出的是UnknownAccountException,
就添加一个actionerror,代码如下:
this.addActionError("用户名错误!");
如果抛出的是IncorrectCredentialsException,
就添加一个actionerror,代码如下:
this.addActionError("密码错误!");
相关代码使用shiro框架进行验证,代码如下:
@Action("userAction_login") public String login() throws Exception { String realCheckcode = (String) ServletActionContext.getRequest().getSession().getAttribute("key"); if(StringUtils.isNotBlank(realCheckcode)){ if(realCheckcode.equals(checkcode)){ //在shiro框架基础开始认证 //获取subject对象 认证状态:未认证 Subject subject = SecurityUtils.getSubject(); if(subject.isAuthenticated()){ return "index"; }else{ //认证令牌(用户在登陆页面中输入) AuthenticationToken token = new UsernamePasswordToken(model.getUsername(), Md5Util.encode(model.getPassword())); //认证-登陆 try { subject.login(token); //跳转首页 //从subject中获取主角对象 User user = (User) subject.getPrincipal(); ServletActionContext.getRequest().getSession().setAttribute("loginUser", user); return "index"; } catch (Exception e) { if(e instanceof UnknownAccountException){ //账户错误 this.addActionError("用户名错误!"); //在登陆页面中获取错误信息。 通过strut2标签获取 <s:actionerror> 问题 } if(e instanceof IncorrectCredentialsException){ //密码错误 this.addActionError("密码错误!"); //在登陆页面中获取错误信息。 通过strut2标签获取 <s:actionerror> 问题 } e.printStackTrace(); } } } } return "login"; }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 聊聊 OAuth 2.0 的 token expire_in 使用 2020-06-08
- 为什么阿里巴巴Java开发手册中强制要求接口返回值不允许使用 2020-06-06
- 学习笔记之方法引用 2020-06-06
- idea使用小技巧(一) 2020-06-05
- 用斗地主的实例学会使用java Collections工具类 2020-06-05
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash