zoukankan      html  css  js  c++  java
  • 基于Token的授权(with srping mvc)

    @Override
    public void doFilter(ServletRequest sr, ServletResponse sr1, FilterChain fc) throws IOException, ServletException {
        boolean tokenAuthenticated = false;
        HttpServletRequest request = (HttpServletRequest) sr;
        String token = findToken(request);
        if ((null == token) || (!authenticationNeeded(request))) {
            fc.doFilter(sr, sr1);
            return;
        }
        if (needHttps && (! request.isSecure())) {
            TokenAuthenticationToken at = new TokenAuthenticationToken(token);
            try {
                at.setDetails(detailsSource.buildDetails(request));
                Authentication auth = manager.authenticate(at);
                if ((auth != null) && (auth.isAuthenticated())) {
                    SecurityContextHolder.getContext().setAuthentication(auth);
                    tokenAuthenticated = true;
                }
            } catch (AuthenticationException e) {
                logger.debug("Authentication failed :", e);
            }
        }
        else {
            logger.info("Token identification rejected : proto != https");
        }
        fc.doFilter(sr, sr1);
        if (tokenAuthenticated) {
            logger.debug("Token authenticated : invalidate session");
            HttpSession session = request.getSession(false);
            if (session != null) {
                session.invalidate();
            }
        }
    }

    除了filter,应该需要在服务端持久化token,参见http://stackoverflow.com/questions/2608372/spring-security-rememberme-services-with-session-cookie?rq=1
    https://github.com/virgo47/restful-spring-security

    logout的实现
    http://stackoverflow.com/questions/14733418/login-logout-in-rest-with-spring-3/14735345#14735345
  • 相关阅读:
    JVM运行时数据区--堆
    ES检索服务搜索结果高亮
    SpringBoot 设置编码UTF-8
    response.setContentType()的作用及参数
    将 vue.js 获取的 html 文本转化为纯文本
    SpringBoot读取properties文件配置项
    关于Java的编译执行与解释执行
    Java沙箱安全机制介绍【转载】
    JVM运行时数据区--本地方法栈
    JVM--先说本地方法接口
  • 原文地址:https://www.cnblogs.com/zlfoak/p/4367625.html
Copyright © 2011-2022 走看看