zoukankan      html  css  js  c++  java
  • Spring Boot

    Copy自http://blog.csdn.net/sun_t89/article/details/51916834

    @SpringBootApplication
    public class SpringRestApplication { 
    public static void main(String[] args) { 
            SpringApplication.run(SpringRestApplication.class, args); 
        } 
    @Bean
    public FilterRegistrationBean  filterRegistrationBean() { 
            FilterRegistrationBean registrationBean = new FilterRegistrationBean(); 
            HTTPBasicAuthorizeAttribute httpBasicFilter = new HTTPBasicAuthorizeAttribute(); 
            registrationBean.setFilter(httpBasicFilter); 
            List<String> urlPatterns = new ArrayList<String>(); 
            urlPatterns.add("/user/*"); 
            registrationBean.setUrlPatterns(urlPatterns); 
    return registrationBean; 
        } 

    public class HTTPBasicAuthorizeAttribute implements Filter{
        private static String Name = "test";
        private static String Password = "test";

        @Override
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
                throws IOException, ServletException {
            // TODO Auto-generated method stub
           
            ResultStatusCode resultStatusCode = checkHTTPBasicAuthorize(request);
            if (resultStatusCode != ResultStatusCode.OK)
            {
                HttpServletResponse httpResponse = (HttpServletResponse) response;
                httpResponse.setCharacterEncoding("UTF-8"); 
                httpResponse.setContentType("application/json; charset=utf-8");
                httpResponse.setStatus(HttpServletResponse.SC_UNAUTHORIZED);

                ObjectMapper mapper = new ObjectMapper();
               
                ResultMsg resultMsg = new ResultMsg(ResultStatusCode.PERMISSION_DENIED.getErrcode(), ResultStatusCode.PERMISSION_DENIED.getErrmsg(), null);
                httpResponse.getWriter().write(mapper.writeValueAsString(resultMsg));
                return;
            }
            else
            {
                chain.doFilter(request, response);
            }
        }

        @Override
        public void init(FilterConfig arg0) throws ServletException {
            // TODO Auto-generated method stub       
        }   

        @Override
        public void destroy() {
            // TODO Auto-generated method stub
        }


        private ResultStatusCode checkHTTPBasicAuthorize(ServletRequest request)
        {
            try
            {
                HttpServletRequest httpRequest = (HttpServletRequest)request;
                String auth = httpRequest.getHeader("Authorization");
                if ((auth != null) && (auth.length() > 6))
                {
                    String HeadStr = auth.substring(0, 5).toLowerCase();
                    if (HeadStr.compareTo("basic") == 0)
                    {
                        auth = auth.substring(6, auth.length()); 
                        String decodedAuth = getFromBASE64(auth);
                        if (decodedAuth != null)
                        {
                            String[] UserArray = decodedAuth.split(":");
                           
                            if (UserArray != null && UserArray.length == 2)
                            {
                                if (UserArray[0].compareTo(Name) == 0
                                        && UserArray[1].compareTo(Password) == 0)
                                {
                                    return ResultStatusCode.OK;
                                }
                            }
                        }
                    }
                }
                return ResultStatusCode.PERMISSION_DENIED;
            }
            catch(Exception ex)
            {
                return ResultStatusCode.PERMISSION_DENIED;
            }       
        }
       
        private String getFromBASE64(String s) { 
            if (s == null) 
                return null; 
            BASE64Decoder decoder = new BASE64Decoder(); 
            try { 
                byte[] b = decoder.decodeBuffer(s); 
                return new String(b); 
            } catch (Exception e) { 
                return null; 
            } 
        }

  • 相关阅读:
    2017.11.22 mysql数据库实现关联表更新sql语句
    2017.11.21 基于JSP+Servlet+JavaBean实现复数运算(二)
    2017.11.20 基于JSP+Servlet+JavaBean实现复数运算(一)
    2017.11.19 如何设计好的数据库
    [专项]链表面试题汇总
    java 的三种代理模式
    我们为什么要使用AOP?
    十张图让你了解阿里公司架构设计的发展变化史(yet)
    Java程序员从阿里、京东、美团面试回来,这些面试题你会吗?(yet)
    [专项]jvm面试题(yet)
  • 原文地址:https://www.cnblogs.com/teamleader/p/6505933.html
Copyright © 2011-2022 走看看