国际化登录相关和错误页面信息

This commit is contained in:
thinkgem
2018-03-29 21:07:17 +08:00
parent 54a976d09e
commit b9c221461b
11 changed files with 119 additions and 24 deletions

View File

@@ -240,11 +240,11 @@ public class FormAuthenticationFilter extends org.apache.shiro.web.filter.authc.
protected boolean onLoginFailure(AuthenticationToken token, AuthenticationException e, ServletRequest request, ServletResponse response) {
String className = e.getClass().getName(), message = "";
if (IncorrectCredentialsException.class.getName().equals(className) || UnknownAccountException.class.getName().equals(className)) {
message = "账号或密码错误, 请重试.";
message = Global.getText("sys.login.failure");
} else if (e.getMessage() != null && StringUtils.startsWith(e.getMessage(), "msg:")) {
message = StringUtils.replace(e.getMessage(), "msg:", "");
} else {
message = "对不起,系统遇见了点问题,请稍后再试!";
message = Global.getText("sys.login.error");
logger.error(message, e); // 输出到日志文件
}
request.setAttribute(getFailureKeyAttribute(), className);

View File

@@ -37,7 +37,8 @@ public class LogoutFilter extends org.apache.shiro.web.filter.authc.LogoutFilter
//try/catch added for SHIRO-298:
try {
// 记录用户退出日志
LogUtils.saveLog(UserUtils.getUser(), ServletUtils.getRequest(), "系统退出", Log.TYPE_LOGIN_LOGOUT);
LogUtils.saveLog(UserUtils.getUser(), ServletUtils.getRequest(),
"系统退出", Log.TYPE_LOGIN_LOGOUT);
// 退出登录
subject.logout();
} catch (SessionException ise) {
@@ -46,7 +47,8 @@ public class LogoutFilter extends org.apache.shiro.web.filter.authc.LogoutFilter
// 如果是Ajax请求返回Json字符串。
if (ServletUtils.isAjaxRequest((HttpServletRequest)request)){
ServletUtils.renderResult((HttpServletResponse)response, Global.TRUE, "退出成功!");
ServletUtils.renderResult((HttpServletResponse)response,
Global.TRUE, Global.getText("sys.logout.success"));
return false;
}

View File

@@ -104,7 +104,7 @@ public class LoginController extends BaseController{
// 如果是Ajax请求返回Json字符串。
if (ServletUtils.isAjaxRequest((HttpServletRequest)request)){
model.addAttribute("result", "login");
model.addAttribute("message", text("未登录或登录超时。请重新登录,谢谢!"));
model.addAttribute("message", text("sys.login.notLongIn"));
return ServletUtils.renderObject(response, model);
}
@@ -255,9 +255,9 @@ public class LoginController extends BaseController{
if (loginInfo.getParam("lang") != null){
Global.setLang(loginInfo.getParam("lang"), request, response);
}
model.addAttribute("message", text("登录成功!"));
model.addAttribute("message", text("sys.login.success"));
}else{
model.addAttribute("message", text("获取信息成功!"));
model.addAttribute("message", text("sys.login.getInfo"));
}
model.addAttribute("sessionid", (String)session.getId());

View File

@@ -0,0 +1,27 @@
sys.login.notLongIn=No login or login timeout.Please login again, thank you!
sys.login.success=Login successful!
sys.login.getInfo=Get info successful!
sys.login.failure=Account or password error, please try again.
sys.login.error=Sorry, system error. Please try again later.
sys.logout.success=Logout successful!
sys.error.400.title=Request parameter error
sys.error.400.message=Request parameter error, server cannot parse.
sys.error.403.title=Insufficient permissions
sys.error.403.message=Your permissions are not sufficient!
sys.error.404.title=Page doesn't exist
sys.error.404.message=The page you visited does not exist!
sys.error.500.title=Internal system error
sys.error.500.message=The page you visited error!
sys.error.returnButton=Previous page
# #### 学习、举例 #### #
#没有参数=No parameters
#有\ {0}\ 个参数= There are {0} parameters
# #### 测试视图写法 #### #
# ${text('没有参数')}
# ${text('有\ {0}\ 个参数', 3)}

View File

@@ -0,0 +1,17 @@
sys.login.notLongIn=未登录或登录超时。请重新登录,谢谢!
sys.login.success=登录成功!
sys.login.getInfo=获取信息成功!
sys.login.failure=账号或密码错误,请重试。
sys.login.error=对不起,系统遇见了点问题,请稍后再试!
sys.logout.success=退出成功!
sys.error.400.title=请求参数错误
sys.error.400.message=请求参数错误,服务器无法解析。
sys.error.403.title=操作权限不足
sys.error.403.message=您的操作权限不足!
sys.error.404.title=页面不存在
sys.error.404.message=您访问的页面不存在!
sys.error.500.title=系统内部错误
sys.error.500.message=您访问的页面出错啦!
sys.error.returnButton=返回上一页

View File

@@ -1,8 +0,0 @@
没有参数=No parameters
有\ {0}\ 个参数= There are {0} parameters
# 测试视图写法
# ${text('没有参数')}
# ${text('有\ {0}\ 个参数', 3)}

View File

@@ -0,0 +1,57 @@
<%
@servlet.getResponse().setStatus(403);
var message = @ObjectUtils.toString(@request.getAttribute('message'));
if (isBlank(message)){
var ex = @ExceptionUtils.getThrowable(request);
if (ex != null){
if(@StringUtils.startsWith(@ex.getMessage(), 'msg:')){
message = @StringUtils.replace(@ex.getMessage(), 'msg:', '');
}else if (ex.class.name == 'org.springframework.validation.BindException'){
for (var e in ex.globalErrors){
message = message + '☆' + e.defaultMessage + '(' + e.objectName + ')<br/>';
}
for (var e in ex.fieldErrors){
message = message + '☆' + e.defaultMessage + '(' + e.field + ')<br/>';
}
}else if (ex.class.name == 'javax.validation.ConstraintViolationException'){
for (var v in ex.constraintViolations) {
message = message + '☆' + v.message + '(' + v.propertyPath + ')<br/>';
}
}else{
message = message + ex.message;
}
@org.slf4j.LoggerFactory.getLogger('error/400').info(ex.message, ex);
}
}
if (isBlank(message)){
message = text('sys.error.400.message');
}
// 如果是异步请求或是手机端,则直接返回信息
if (@ServletUtils.isAjaxRequest(request)) {
print(message);
}
// 输出异常信息页面
else {
%>
<% layout('/layouts/default.html', {title: '400 - '+text('sys.error.400.title')}){ %>
<link rel="stylesheet" href="${ctxStatic}/common/error.css?${_version}">
<div class="error-page">
<div class="headline text-yellow">400</div>
<div class="error-content">
<h3><i class="fa fa-warning text-yellow"></i> ${text('sys.error.400.title')}</h3>
<p>${message}</p>
<button type="button" class="btn btn-warning btn-sm" onclick="history.go(-1);"><i
class="fa fa-reply-all"></i> ${text('sys.error.returnButton')}</button>
</div>
<div class="copyright">
<% var productName = @Global.getConfig('productName'), productVersion = @Global.getConfig('productVersion'); %>
版权所有 &copy; ${@DateUtils.getYear()} ${productName} - Powered By <a href="http://jeesite.com">JeeSite</a>.
</div>
</div>
<% } %>
<% } %>

View File

@@ -13,7 +13,7 @@ if (isBlank(message)){
}
if (isBlank(message)){
message = "您的操作权限不足!";
message = text('sys.error.403.message');
}
// 如果是异步请求或是手机端,则直接返回信息
@@ -24,7 +24,7 @@ if (@ServletUtils.isAjaxRequest(request)) {
// 输出异常信息页面
else {
%>
<% layout('/layouts/default.html', {title: '403 - 操作权限不足'}){ %>
<% layout('/layouts/default.html', {title: '403 - '+text('sys.error.403.title')}){ %>
<link rel="stylesheet" href="${ctxStatic}/common/error.css?${_version}">
<div class="error-page">
<div class="headline text-yellow">403</div>
@@ -32,7 +32,7 @@ else {
<h3><i class="fa fa-warning text-yellow"></i> ${message}</h3>
<p>很抱歉,您没有权限访问此页面,若有疑问请联系管理员。</p>
<button type="button" class="btn btn-warning btn-sm" onclick="history.go(-1);"><i
class="fa fa-reply-all"></i> 返回上一页</button>
class="fa fa-reply-all"></i> ${text('sys.error.returnButton')}</button>
</div>
<div class="copyright">
<% var productName = @Global.getConfig('productName'), productVersion = @Global.getConfig('productVersion'); %>

View File

@@ -4,7 +4,7 @@
var message = @ObjectUtils.toString(@request.getAttribute("message"));
if (isBlank(message)){
message = "您访问的页面不存在!";
message = text('sys.error.404.message');
}
// 下载文件不存在的异常,状态码设为正常
@@ -20,7 +20,7 @@ if (@ServletUtils.isAjaxRequest(request)) {
// 输出异常信息页面
else {
%>
<% layout('/layouts/default.html', {title: '404 - 页面不存在'}){ %>
<% layout('/layouts/default.html', {title: '404 - '+text('sys.error.404.title')}){ %>
<link rel="stylesheet" href="${ctxStatic}/common/error.css?${_version}">
<div class="error-page">
<div class="headline text-aqua mt20">404</div>
@@ -39,7 +39,7 @@ else {
<li>......</li>
</ul>
<button type="button" class="btn btn-info btn-sm" onclick="history.go(-1);"><i
class="fa fa-reply-all"></i> 返回上一页</button>
class="fa fa-reply-all"></i> ${text('sys.error.returnButton')}</button>
</div>
<div class="copyright">
<% var productName = @Global.getConfig('productName'), productVersion = @Global.getConfig('productVersion'); %>

View File

@@ -17,7 +17,7 @@ if (isBlank(message)){
}
if (isBlank(message)){
message = "您访问的页面出错啦!";
message = text('sys.error.500.message');
}
// 如果是异步请求或是手机端,则直接返回信息
@@ -28,7 +28,7 @@ if (@ServletUtils.isAjaxRequest(request)) {
// 输出异常信息页面
else {
%>
<% layout('/layouts/default.html', {title: '500 - 系统内部错误'}){ %>
<% layout('/layouts/default.html', {title: '500 - '+text('sys.error.500.title')}){ %>
<link rel="stylesheet" href="${ctxStatic}/common/error.css?${_version}">
<div class="error-page">
<div class="headline text-red">500</div>
@@ -36,7 +36,7 @@ else {
<h3><i class="fa fa-warning text-red"></i> ${message}</h3>
<p>对不起,你访问的页面出现了一点问题,请及时联系管理员解决!</p>
<button type="button" class="btn btn-danger btn-sm" onclick="history.go(-1);"><i
class="fa fa-reply-all"></i> 返回上一页</button>
class="fa fa-reply-all"></i> ${text('sys.error.returnButton')}</button>
</div>
<div class="copyright">
<% var productName = @Global.getConfig('productName'), productVersion = @Global.getConfig('productVersion'); %>