国际化登录相关和错误页面信息
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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());
|
||||
|
||||
|
||||
27
modules/core/src/main/resources/i18n/core/i18n_en.properties
Normal file
27
modules/core/src/main/resources/i18n/core/i18n_en.properties
Normal 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)}
|
||||
@@ -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=返回上一页
|
||||
@@ -1,8 +0,0 @@
|
||||
没有参数=No parameters
|
||||
有\ {0}\ 个参数= There are {0} parameters
|
||||
|
||||
|
||||
# 测试视图写法
|
||||
|
||||
# ${text('没有参数')}
|
||||
# ${text('有\ {0}\ 个参数', 3)}
|
||||
57
modules/core/src/main/resources/views/error/400.html
Normal file
57
modules/core/src/main/resources/views/error/400.html
Normal 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'); %>
|
||||
版权所有 © ${@DateUtils.getYear()} ${productName} - Powered By <a href="http://jeesite.com">JeeSite</a>.
|
||||
</div>
|
||||
</div>
|
||||
<% } %>
|
||||
<% } %>
|
||||
@@ -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'); %>
|
||||
|
||||
@@ -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'); %>
|
||||
|
||||
@@ -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'); %>
|
||||
|
||||
Reference in New Issue
Block a user