Commit 976b5e78 by cjh

1.修改logout

2.添加文件类型拦截器
3.添加工具类,添加json转换方法
parent 6e8f4638
......@@ -13,8 +13,12 @@ public class NoUiContext extends AbstractContext {
@Override
public void logout(DataType arg0, String arg1) {
if(redisLoginInfo != null){
NoUiUtils.logout(redisLoginInfo.getUserId(),redisLoginInfo.getTerminalType());
// if(redisLoginInfo != null){
// NoUiUtils.logout(redisLoginInfo.getUserId(),redisLoginInfo.getTerminalType());
// }
if(arg0.equals(DataType.USER_NAME)){
NoUiUtils.logout(arg1,"*");
}
}
......
package org.sss.presentation.noui.filter;
import com.google.gson.Gson;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import org.sss.presentation.noui.api.response.ErrorCodes;
import org.sss.presentation.noui.api.response.Result;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.Map;
/**
* 全局文件类型拦截器
*/
public class FileTypeInterceptor extends HandlerInterceptorAdapter {
private String type_list;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
boolean flag = true;
// 判断是否为文件上传请求
if (request instanceof MultipartHttpServletRequest) {
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
Map<String, MultipartFile> files = multipartRequest.getFileMap();
Iterator<String> iterator = files.keySet().iterator();
//对多部件请求资源进行遍历
while (iterator.hasNext()) {
String formKey = (String) iterator.next();
MultipartFile multipartFile = multipartRequest.getFile(formKey);
String filename = multipartFile.getOriginalFilename();
//判断是否为限制文件类型
if (!checkFile(filename)) {
//限制文件类型,请求转发到原始请求页面,并携带错误提示信息
flag = false;
response.setContentType("application/json; charset=utf-8");
Result result = new Result(ErrorCodes.ERROR, "不支持的文件类型!", null);
PrintWriter out = response.getWriter();
String json = new Gson().toJson(result);
out.print(json);
out.flush();
out.close();
}
}
}
return flag;
}
/**
* 判断是否为允许的上传文件类型,true表示允许
*/
private boolean checkFile(String fileName) {
//设置允许上传文件类型
// String suffixList = "jpg,gif,png,ico,bmp,jpeg";
String suffixList = type_list;
// 获取文件后缀
String suffix = fileName.substring(fileName.lastIndexOf(".") + 1, fileName.length());
if (suffixList.contains(suffix.trim().toLowerCase())) {
return true;
}
return false;
}
public void setType_list(String type_list) {
this.type_list = type_list;
}
}
\ No newline at end of file
package org.sss.presentation.noui.util;
import com.google.gson.Gson;
import java.util.Map;
public class CommonUtils {
public static Map pasreMap(String jsonstr) {
Gson gson = new Gson();
return gson.fromJson(jsonstr, Map.class);
}
}
......@@ -3,6 +3,7 @@ package org.sss.presentation.noui.util;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import log.Log;
import log.LogFactory;
......@@ -15,6 +16,7 @@ import org.sss.common.model.IFilter;
import org.sss.common.model.II18n;
import org.sss.common.model.IModuleSession;
import org.sss.presentation.noui.api.request.NoUiRequest;
import org.sss.presentation.noui.common.Constants;
import org.sss.presentation.noui.context.NoUiContext;
import org.sss.presentation.noui.context.NoUiPresentation;
import org.sss.util.ContainerUtils;
......@@ -106,10 +108,21 @@ public class NoUiUtils {
}
public static Boolean logout(String userId,String type){
NoUiRequest noUiRequest = new NoUiRequest();
noUiRequest.setUserId(userId);
noUiRequest.setTerminalType(type);
return RedisUtil.delete(StringUtil.userUniqueId(noUiRequest));
//模糊匹配删除所有终端登陆key
public static void logout(String userId,String type){
// NoUiRequest noUiRequest = new NoUiRequest();
// noUiRequest.setUserId(userId);
// noUiRequest.setTerminalType(type);
try {
if ("*".equals(type)) {
Set<String> keys = RedisUtil.keys(Constants.SESSION + "." + userId);
for (String str : keys) {
RedisUtil.delete(str);
}
}
}catch (Exception e){
log.error("logout error:",e);
}
// return RedisUtil.delete(StringUtil.userUniqueId(noUiRequest));
}
}
package org.sss.presentation.noui.util;
import java.util.Properties;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import org.springframework.data.redis.core.RedisTemplate;
......@@ -49,4 +50,8 @@ public class RedisUtil {
public static Boolean delete(String key){
return redisTemplate.delete(key);
}
public static Set keys(String key){
return redisTemplate.keys(key+"*");
}
}
\ No newline at end of file
......@@ -13,6 +13,16 @@
<mvc:annotation-driven />
<mvc:default-servlet-handler />
<mvc:interceptors>
<mvc:interceptor>
<!-- /**表示所有URL和子URL路径 -->
<mvc:mapping path="/**" />
<!-- 配置自定义的文件上传类型限制拦截器 -->
<bean class="org.sss.presentation.noui.filter.FileTypeInterceptor">
<property name="type_list" value="jpg,gif,png,ico,bmp,jpeg" />
</bean>
</mvc:interceptor>
<mvc:interceptor>
<mvc:mapping path="/**/*" />
<bean class="org.sss.presentation.noui.filter.Cors" />
......@@ -29,7 +39,7 @@
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="200000" />
<property name="maxInMemorySize" value="200000" />
</bean>
</bean>
<!-- 配置自动扫描的包 -->
<context:component-scan base-package="org.sss.presentation.noui.controller"></context:component-scan>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment