使用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
