no commit message

This commit is contained in:
贝密游戏
2017-07-23 22:56:36 +08:00
parent 14e61d5dca
commit 39f46604da
19 changed files with 952 additions and 4 deletions

View File

@@ -0,0 +1,57 @@
package com.beimi.config.web;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
import org.springframework.security.web.util.matcher.RequestMatcher;
import com.beimi.core.BMDataContext;
import com.beimi.util.cache.CacheHelper;
public class ApiRequestMatchingFilter implements Filter {
private RequestMatcher[] ignoredRequests;
public ApiRequestMatchingFilter(RequestMatcher... matcher) {
this.ignoredRequests = matcher;
}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
boolean matchAnyRoles = false ;
for(RequestMatcher anyRequest : ignoredRequests ){
if(anyRequest.matches(request)){
matchAnyRoles = true ;
}
}
String authorization = request.getHeader("authorization") ;
if(matchAnyRoles){
if(!StringUtils.isBlank(authorization) && CacheHelper.getApiUserCacheBean().getCacheObject(authorization, BMDataContext.SYSTEM_ORGI) != null){
chain.doFilter(req,resp);
}else{
HttpServletResponse response = (HttpServletResponse) resp ;
response.sendRedirect("/tokens");
}
}else{
chain.doFilter(req,resp);
}
}
@Override
public void destroy() {
}
@Override
public void init(FilterConfig arg0) throws ServletException {
}
}

View File

@@ -0,0 +1,21 @@
package com.beimi.config.web;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import com.beimi.web.handler.interceptor.CrossInterceptorHandler;
@Configuration
public class UKWebAppConfigurer
extends WebMvcConfigurerAdapter {
@Override
public void addInterceptors(InterceptorRegistry registry) {
// 多个拦截器组成一个拦截器链
// addPathPatterns 用于添加拦截规则
// excludePathPatterns 用户排除拦截
registry.addInterceptor(new CrossInterceptorHandler()).addPathPatterns("/**");
super.addInterceptors(registry);
}
}

View File

@@ -30,7 +30,8 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
http.addFilterAfter(tokenInfoTokenFilterSecurityInterceptor() , BasicAuthenticationFilter.class)
.antMatcher("*/*").authorizeRequests()
.anyRequest().permitAll()
.and().addFilterAfter(csrfHeaderFilter(), BasicAuthenticationFilter.class);
.and().addFilterAfter(csrfHeaderFilter(), BasicAuthenticationFilter.class)
.addFilterAfter(apiTokenFilterSecurityInterceptor(), BasicAuthenticationFilter.class);
}
@Bean
public Filter tokenInfoTokenFilterSecurityInterceptor() throws Exception
@@ -49,6 +50,12 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
return new DelegateRequestMatchingFilter(autconfig , configprops , beans , dump , env , health , info , mappings , metrics , trace);
}
@Bean
public Filter apiTokenFilterSecurityInterceptor() throws Exception
{
return new ApiRequestMatchingFilter(new AntPathRequestMatcher("/api/**"));
}
private Filter csrfHeaderFilter() {
return new OncePerRequestFilter() {

View File

@@ -9,6 +9,7 @@ public class BMDataContext {
public static final String GUEST_USER_ID_CODE = "BEIMIGUESTUSEKEY" ;
public static final String SERVICE_QUENE_NULL_STR = "service_quene_null" ;
public static final String DEFAULT_TYPE = "default" ; //默认分类代码
public static String SYSTEM_ORGI = "beimi" ;
private static int WebIMPort = 8081 ;

View File

@@ -0,0 +1,28 @@
package com.beimi.util;
public class UKView {
private String page ;
private String templet;
public UKView(String templet , String page){
this.templet = templet ;
this.page = page ;
}
public UKView(String page){
this.page = page ;
}
public String getPage() {
return page;
}
public void setPage(String page) {
this.page = page;
}
public String getTemplet() {
return templet;
}
public void setTemplet(String templet) {
this.templet = templet;
}
}

View File

@@ -0,0 +1,59 @@
package com.beimi.util.cache;
import java.util.Collection;
import java.util.concurrent.locks.Lock;
public interface CacheBean {
/**
*
*/
public void put(String key , Object value , String orgi) ;
/**
*
*/
public void clear(String orgi);
public Object delete(String key , String orgi) ;
public void update(String key , String orgi , Object object) ;
/**
*
* @param key
* @param orgi
* @return
*/
public Object getCacheObject(String key, String orgi) ;
/**
*
* @param key
* @param orgi
* @return
*/
public Object getCacheObject(String key, String orgi,Object defaultValue) ;
/**
* 获取所有缓存对象
* @param orgi
* @return
*/
public Collection<?> getAllCacheObject(String orgi) ;
public CacheBean getCacheInstance(String cacheName);
public Object getCache();
public Lock getLock(String lock, String orgi);
public long getSize();
public long getAtomicLong(String cacheName) ;
public void setAtomicLong(String cacheName , long start) ; //初始化 发号器
}

View File

@@ -0,0 +1,31 @@
package com.beimi.util.cache;
import com.beimi.util.cache.hazelcast.HazlcastCacheHelper;
public class CacheHelper {
private static CacheHelper instance = new CacheHelper();
/**
* 获取缓存实例
*/
public static CacheHelper getInstance(){
return instance ;
}
private static CacheInstance cacheInstance = new HazlcastCacheHelper();
public static CacheBean getOnlineUserCacheBean() {
return cacheInstance!=null ? cacheInstance.getOnlineCacheBean() : null;
}
public static CacheBean getSystemCacheBean() {
return cacheInstance!=null ? cacheInstance.getSystemCacheBean() : null ;
}
public static CacheBean getIMRCacheBean() {
return cacheInstance!=null ? cacheInstance.getIMRCacheBean() : null ;
}
public static CacheBean getApiUserCacheBean() {
return cacheInstance!=null ? cacheInstance.getApiUserCacheBean() : null ;
}
}

View File

@@ -0,0 +1,31 @@
package com.beimi.util.cache;
public interface CacheInstance {
/**
* 在线用户
* @return
*/
public CacheBean getOnlineCacheBean();
/**
* 系统缓存
* @return
*/
public CacheBean getSystemCacheBean();
/**
* IMR指令
* @return
*/
public CacheBean getIMRCacheBean();
/**
* IMR指令
* @return
*/
public CacheBean getApiUserCacheBean();
}

View File

@@ -0,0 +1,44 @@
package com.beimi.util.cache.hazelcast;
import com.beimi.core.BMDataContext;
import com.beimi.util.cache.CacheBean;
import com.beimi.util.cache.CacheInstance;
import com.beimi.util.cache.hazelcast.impl.ApiUserCache;
import com.beimi.util.cache.hazelcast.impl.MultiCache;
import com.beimi.util.cache.hazelcast.impl.OnlineCache;
import com.beimi.util.cache.hazelcast.impl.SystemCache;
/**
* Hazlcast缓存处理实例类
* @author admin
*
*/
public class HazlcastCacheHelper implements CacheInstance{
/**
* 服务类型枚举
* @author admin
*
*/
public enum CacheServiceEnum{
HAZLCAST_CLUSTER_AGENT_USER_CACHE, HAZLCAST_CLUSTER_AGENT_STATUS_CACHE, HAZLCAST_CLUSTER_QUENE_USER_CACHE,HAZLCAST_ONLINE_CACHE , HAZLCAST_CULUSTER_SYSTEM , HAZLCAST_IMR_CACHE , API_USER_CACHE;
public String toString(){
return super.toString().toLowerCase();
}
}
@Override
public CacheBean getOnlineCacheBean() {
return BMDataContext.getContext().getBean(OnlineCache.class).getCacheInstance(CacheServiceEnum.HAZLCAST_ONLINE_CACHE.toString()) ;
}
@Override
public CacheBean getSystemCacheBean() {
return BMDataContext.getContext().getBean(SystemCache.class).getCacheInstance(CacheServiceEnum.HAZLCAST_CULUSTER_SYSTEM.toString()) ;
}
@Override
public CacheBean getIMRCacheBean() {
return BMDataContext.getContext().getBean(MultiCache.class).getCacheInstance(CacheServiceEnum.HAZLCAST_IMR_CACHE.toString()) ;
}
@Override
public CacheBean getApiUserCacheBean() {
return BMDataContext.getContext().getBean(ApiUserCache.class).getCacheInstance(CacheServiceEnum.API_USER_CACHE.toString()) ;
}
}

View File

@@ -0,0 +1,93 @@
package com.beimi.util.cache.hazelcast.impl;
import java.util.Collection;
import java.util.concurrent.locks.Lock;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.beimi.util.cache.CacheBean;
import com.hazelcast.core.HazelcastInstance;
@Service("api_user_cache")
public class ApiUserCache implements CacheBean{
@Autowired
public HazelcastInstance hazelcastInstance;
private String cacheName ;
public HazelcastInstance getInstance(){
return hazelcastInstance ;
}
public CacheBean getCacheInstance(String cacheName){
this.cacheName = cacheName ;
return this ;
}
@Override
public void put(String key, Object value, String orgi) {
getInstance().getMap(getName()).put(key, value) ;
}
@Override
public void clear(String orgi) {
getInstance().getMap(getName()).clear();
}
@Override
public Object delete(String key, String orgi) {
return getInstance().getMap(getName()).remove(key) ;
}
@Override
public void update(String key, String orgi, Object value) {
getInstance().getMap(getName()).put(key, value);
}
@Override
public Object getCacheObject(String key, String orgi) {
return getInstance().getMap(getName()).get(key);
}
public String getName() {
return cacheName ;
}
// @Override
public void service() throws Exception {
// TODO Auto-generated method stub
}
@Override
public Collection<?> getAllCacheObject(String orgi) {
return getInstance().getMap(getName()).keySet();
}
@Override
public Object getCacheObject(String key, String orgi, Object defaultValue) {
return getCacheObject(key, orgi);
}
@Override
public Object getCache() {
return getInstance().getMap(cacheName);
}
@Override
public Lock getLock(String lock , String orgi) {
// TODO Auto-generated method stub
return getInstance().getLock(lock);
}
@Override
public long getSize() {
return getInstance().getMap(getName()).size();
}
@Override
public long getAtomicLong(String cacheName) {
return getInstance().getAtomicLong(getName()).incrementAndGet();
}
@Override
public void setAtomicLong(String cacheName, long start) {
getInstance().getAtomicLong(getName()).set(start);
}
}

View File

@@ -0,0 +1,94 @@
package com.beimi.util.cache.hazelcast.impl;
import java.util.Collection;
import java.util.concurrent.locks.Lock;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.beimi.util.cache.CacheBean;
import com.hazelcast.core.HazelcastInstance;
@Service("multi_cache")
public class MultiCache implements CacheBean{
@Autowired
public HazelcastInstance hazelcastInstance;
private String cacheName ;
public HazelcastInstance getInstance(){
return hazelcastInstance ;
}
public CacheBean getCacheInstance(String cacheName){
this.cacheName = cacheName ;
return this ;
}
@Override
public void put(String key, Object value, String orgi) {
getInstance().getMultiMap(getName()).put(key, value) ;
}
@Override
public void clear(String orgi) {
getInstance().getMultiMap(getName()).clear();
}
@Override
public Object delete(String key, String orgi) {
return getInstance().getMultiMap(getName()).remove(key) ;
}
@Override
public void update(String key, String orgi, Object value) {
getInstance().getMultiMap(getName()).put(key, value);
}
@Override
public Object getCacheObject(String key, String orgi) {
return getInstance().getMultiMap(getName()).get(key);
}
public String getName() {
return cacheName ;
}
// @Override
public void service() throws Exception {
// TODO Auto-generated method stub
}
@Override
public Collection<?> getAllCacheObject(String orgi) {
return getInstance().getMultiMap(getName()).keySet();
}
@Override
public Object getCacheObject(String key, String orgi, Object defaultValue) {
return getCacheObject(key, orgi);
}
@Override
public Object getCache() {
return getInstance().getMultiMap(cacheName);
}
@Override
public Lock getLock(String lock , String orgi) {
// TODO Auto-generated method stub
return getInstance().getLock(lock);
}
@Override
public long getSize() {
return getInstance().getMultiMap(getName()).size();
}
@Override
public long getAtomicLong(String cacheName) {
return getInstance().getAtomicLong(getName()).incrementAndGet();
}
@Override
public void setAtomicLong(String cacheName, long start) {
getInstance().getAtomicLong(getName()).set(start);
}
}

View File

@@ -0,0 +1,93 @@
package com.beimi.util.cache.hazelcast.impl;
import java.util.Collection;
import java.util.concurrent.locks.Lock;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.beimi.util.cache.CacheBean;
import com.hazelcast.core.HazelcastInstance;
@Service("online_cache")
public class OnlineCache implements CacheBean{
@Autowired
public HazelcastInstance hazelcastInstance;
private String cacheName ;
public HazelcastInstance getInstance(){
return hazelcastInstance ;
}
public CacheBean getCacheInstance(String cacheName){
this.cacheName = cacheName ;
return this ;
}
@Override
public void put(String key, Object value, String orgi) {
getInstance().getMap(getName()).put(key, value) ;
}
@Override
public void clear(String orgi) {
getInstance().getMap(getName()).clear();
}
@Override
public Object delete(String key, String orgi) {
return getInstance().getMap(getName()).remove(key) ;
}
@Override
public void update(String key, String orgi, Object value) {
getInstance().getMap(getName()).put(key, value);
}
@Override
public Object getCacheObject(String key, String orgi) {
return getInstance().getMap(getName()).get(key);
}
public String getName() {
return cacheName ;
}
// @Override
public void service() throws Exception {
// TODO Auto-generated method stub
}
@Override
public Collection<?> getAllCacheObject(String orgi) {
return getInstance().getMap(getName()).keySet();
}
@Override
public Object getCacheObject(String key, String orgi, Object defaultValue) {
return getCacheObject(key, orgi);
}
@Override
public Object getCache() {
return getInstance().getMap(cacheName);
}
@Override
public Lock getLock(String lock , String orgi) {
// TODO Auto-generated method stub
return getInstance().getLock(lock);
}
@Override
public long getSize() {
return getInstance().getMap(getName()).size();
}
@Override
public long getAtomicLong(String cacheName) {
return getInstance().getAtomicLong(getName()).incrementAndGet();
}
@Override
public void setAtomicLong(String cacheName, long start) {
getInstance().getAtomicLong(getName()).set(start);
}
}

View File

@@ -0,0 +1,93 @@
package com.beimi.util.cache.hazelcast.impl;
import java.util.Collection;
import java.util.concurrent.locks.Lock;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.beimi.util.cache.CacheBean;
import com.hazelcast.core.HazelcastInstance;
@Service("system_cache")
public class SystemCache implements CacheBean{
@Autowired
public HazelcastInstance hazelcastInstance;
private String cacheName ;
public HazelcastInstance getInstance(){
return hazelcastInstance ;
}
public CacheBean getCacheInstance(String cacheName){
this.cacheName = cacheName ;
return this ;
}
@Override
public void put(String key, Object value, String orgi) {
getInstance().getMap(getName()).put(key, value) ;
}
@Override
public void clear(String orgi) {
getInstance().getMap(getName()).clear();
}
@Override
public Object delete(String key, String orgi) {
return getInstance().getMap(getName()).remove(key) ;
}
@Override
public void update(String key, String orgi, Object value) {
getInstance().getMap(getName()).put(key, value);
}
@Override
public Object getCacheObject(String key, String orgi) {
return getInstance().getMap(getName()).get(key);
}
public String getName() {
return cacheName ;
}
// @Override
public void service() throws Exception {
// TODO Auto-generated method stub
}
@Override
public Collection<?> getAllCacheObject(String orgi) {
return getInstance().getMap(getName()).keySet();
}
@Override
public Object getCacheObject(String key, String orgi, Object defaultValue) {
return getCacheObject(key, orgi);
}
@Override
public Object getCache() {
return getInstance().getMap(cacheName);
}
@Override
public Lock getLock(String lock , String orgi) {
// TODO Auto-generated method stub
return getInstance().getLock(lock);
}
@Override
public long getSize() {
return getInstance().getMap(getName()).size();
}
@Override
public long getAtomicLong(String cacheName) {
return getInstance().getAtomicLong(getName()).incrementAndGet();
}
@Override
public void setAtomicLong(String cacheName, long start) {
getInstance().getAtomicLong(getName()).set(start);
}
}

View File

@@ -0,0 +1,150 @@
package com.beimi.web.handler;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.servlet.ModelAndView;
import com.beimi.core.BMDataContext;
import com.beimi.util.UKTools;
import com.beimi.util.UKView;
import com.beimi.util.cache.CacheHelper;
import com.beimi.web.model.User;
@Controller
@SessionAttributes
public class Handler {
public final static int PAGE_SIZE_BG = 1 ;
public final static int PAGE_SIZE_TW = 20 ;
public final static int PAGE_SIZE_FV = 50 ;
public final static int PAGE_SIZE_HA = 100 ;
public User getUser(HttpServletRequest request){
User user = (User) request.getSession(true).getAttribute(BMDataContext.USER_SESSION_NAME) ;
if(user==null){
String authorization = request.getHeader("authorization") ;
if(StringUtils.isBlank(authorization) && request.getCookies()!=null){
for(Cookie cookie : request.getCookies()){
if(cookie.getName().equals("authorization")){
authorization = cookie.getValue() ; break ;
}
}
}
if(!StringUtils.isBlank(authorization)){
user = (User) CacheHelper.getApiUserCacheBean().getCacheObject(authorization, BMDataContext.SYSTEM_ORGI) ;
}
if(user==null){
user = new User();
user.setId(UKTools.getContextID(request.getSession().getId())) ;
user.setUsername(BMDataContext.GUEST_USER+"_"+UKTools.genIDByKey(user.getId())) ;
user.setOrgi(BMDataContext.SYSTEM_ORGI);
user.setSessionid(user.getId()) ;
}
}else{
user.setSessionid(user.getId()) ;
}
return user ;
}
public User getIMUser(HttpServletRequest request , String sign){
User user = (User) request.getSession(true).getAttribute(BMDataContext.IM_USER_SESSION_NAME) ;
if(user==null){
user = new User();
if(!StringUtils.isBlank(sign)){
user.setId(sign) ;
}else{
user.setId(UKTools.getContextID(request.getSession().getId())) ;
}
user.setUsername(BMDataContext.GUEST_USER+"_"+UKTools.genIDByKey(user.getId())) ;
user.setSessionid(user.getId()) ;
}else{
user.setSessionid(UKTools.getContextID(request.getSession().getId())) ;
}
return user ;
}
public void setUser(HttpServletRequest request , User user){
request.getSession(true).removeAttribute(BMDataContext.USER_SESSION_NAME) ;
request.getSession(true).setAttribute(BMDataContext.USER_SESSION_NAME , user) ;
}
/**
* 创建系统监控的 模板页面
* @param page
* @return
*/
public UKView createAdminTempletResponse(String page) {
return new UKView("/admin/include/tpl" , page);
}
/**
* 创建系统监控的 模板页面
* @param page
* @return
*/
public UKView createAppsTempletResponse(String page) {
return new UKView("/apps/include/tpl" , page);
}
/**
* 创建系统监控的 模板页面
* @param page
* @return
*/
public UKView createEntIMTempletResponse(String page) {
return new UKView("/apps/entim/include/tpl" , page);
}
public UKView createRequestPageTempletResponse(String page) {
return new UKView(page);
}
/**
*
* @param data
* @return
*/
public ModelAndView request(UKView data) {
return new ModelAndView(data.getTemplet()!=null ? data.getTemplet(): data.getPage() , "data", data) ;
}
public int getP(HttpServletRequest request) {
int page = 0;
String p = request.getParameter("p") ;
if(!StringUtils.isBlank(p) && p.matches("[\\d]*")){
page = Integer.parseInt(p) ;
if(page > 0){
page = page - 1 ;
}
}
return page;
}
public int getPs(HttpServletRequest request) {
int pagesize = PAGE_SIZE_TW;
String ps = request.getParameter("ps") ;
if(!StringUtils.isBlank(ps) && ps.matches("[\\d]*")){
pagesize = Integer.parseInt(ps) ;
}
return pagesize;
}
public int get50Ps(HttpServletRequest request) {
int pagesize = PAGE_SIZE_FV;
String ps = request.getParameter("ps") ;
if(!StringUtils.isBlank(ps) && ps.matches("[\\d]*")){
pagesize = Integer.parseInt(ps) ;
}
return pagesize;
}
public String getOrgi(HttpServletRequest request)
{
return getUser(request).getOrgi();
}
}

View File

@@ -0,0 +1,66 @@
package com.beimi.web.handler.api;
import java.util.Date;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import com.beimi.core.BMDataContext;
import com.beimi.util.UKTools;
import com.beimi.util.cache.CacheHelper;
import com.beimi.web.handler.Handler;
import com.beimi.web.model.User;
import com.beimi.web.service.repository.UserRepository;
@RestController
@RequestMapping("/tokens")
public class ApiLoginController extends Handler{
@Autowired
private UserRepository userRepository;
@SuppressWarnings("rawtypes")
@RequestMapping(method = RequestMethod.POST)
public ResponseEntity login(HttpServletRequest request , HttpServletResponse response , @Valid User user) {
User loginUser = userRepository.findByUsernameAndPassword(user.getUsername() , UKTools.md5(user.getPassword())) ;
ResponseEntity entity = null ;
if(loginUser!=null && !StringUtils.isBlank(loginUser.getId())){
loginUser.setLogin(true);
loginUser.setLastlogintime(new Date());
if(!StringUtils.isBlank(loginUser.getId())){
userRepository.save(loginUser) ;
}
String auth = UKTools.getUUID();
CacheHelper.getApiUserCacheBean().put(auth, loginUser, BMDataContext.SYSTEM_ORGI);
entity = new ResponseEntity<>(auth, HttpStatus.OK) ;
response.addCookie(new Cookie("authorization",auth));
}else{
entity = new ResponseEntity<>(HttpStatus.UNAUTHORIZED) ;
}
return entity;
}
@SuppressWarnings("rawtypes")
@RequestMapping(method = RequestMethod.GET)
public ResponseEntity error(HttpServletRequest request) {
return new ResponseEntity<>(super.getUser(request) , HttpStatus.OK);
}
@SuppressWarnings("rawtypes")
@RequestMapping(method = RequestMethod.DELETE)
public ResponseEntity logout(HttpServletRequest request , @RequestHeader(value="authorization") String authorization) {
return new ResponseEntity<>(HttpStatus.OK);
}
}

View File

@@ -0,0 +1,34 @@
package com.beimi.web.handler.api.rest;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.beimi.web.handler.Handler;
import com.beimi.web.model.User;
import com.beimi.web.service.repository.UserRepository;
@RestController
@RequestMapping("/api/user")
public class ApiUserController extends Handler{
@Autowired
private UserRepository userRepository;
@RequestMapping(method = RequestMethod.GET)
public ResponseEntity<User> get(HttpServletRequest request , @RequestParam String id) {
User user = null ;
if(!StringUtils.isBlank(id)){
user = userRepository.findByIdAndOrgi(id, super.getOrgi(request)) ;
}
return new ResponseEntity<>(user, HttpStatus.OK);
}
}

View File

@@ -0,0 +1,30 @@
package com.beimi.web.handler.interceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
public class CrossInterceptorHandler extends HandlerInterceptorAdapter {
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE, PUT");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "x-requested-with, accept, authorization, content-type");
response.setHeader("X-Frame-Options", "SAMEORIGIN");
return true ;
}
public void postHandle(HttpServletRequest arg0, HttpServletResponse response, Object arg2,
ModelAndView view) throws Exception {
}
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
}
}

View File

@@ -37,7 +37,7 @@ spring.hazelcast.config=classpath:config/hazelcast.xml
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/beixi?useUnicode=true&characterEncoding=UTF-8
spring.datasource.url=jdbc:mysql://localhost:3306/beimi?useUnicode=true&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=123456

View File

@@ -24,8 +24,8 @@
xmlns="http://www.hazelcast.com/schema/config"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<group>
<name>UCKeFu</name>
<password>UCKeFu-1234567890</password>
<name>BeiMi</name>
<password>BeiMi-1234567890</password>
</group>
<network>
<port auto-increment="true" port-count="100">5701</port>
@@ -180,6 +180,22 @@
<cache-deserialized-values>INDEX-ONLY</cache-deserialized-values>
</map>
<map name="api_user_cache">
<in-memory-format>BINARY</in-memory-format>
<backup-count>1</backup-count>
<async-backup-count>0</async-backup-count>
<!-- 最大过期时间7天 -->
<time-to-live-seconds>604800</time-to-live-seconds>
<!-- 最长空闲时间8小时 -->
<max-idle-seconds>28800</max-idle-seconds>
<eviction-policy>NONE</eviction-policy>
<max-size policy="PER_NODE">0</max-size>
<eviction-percentage>25</eviction-percentage>
<min-eviction-check-millis>100</min-eviction-check-millis>
<merge-policy>com.hazelcast.map.merge.PutIfAbsentMapMergePolicy</merge-policy>
<cache-deserialized-values>INDEX-ONLY</cache-deserialized-values>
</map>
<multimap name="default">
<backup-count>1</backup-count>