_Cipher 2018-11-02 16:06 采纳率: 0%
浏览 2756
已结题

SpringSecurity+CAS 明明登录了,但是在corf跨域访问后台获取用户名,得到的总是匿名用户?

图片说明SpringSecurity+CAS 明明登录了,但是在corf跨域访问后台获取到的总是匿名用户 在不经过springSecurity的权限过滤器的时候 跨域是成功的 但是我需要获取到用户名 就加入了在其他与cas 连接的项目中登录了 可是就是获取不到用户名 都是 匿名用户. 在不加上面这句话的情况就出现了下图的错误  图片说明
但是从这个链接中点击进去 后项目又正常了一次 在刷新页面又要出错后点击链接才行 很烦 cas 和 springSecurity 的配置应该没有错误。。
不知道是不是 corf 的 preflight request 请求没有放行 csrf disable="true" 我也设置了

    能帮忙解决的发100红包  最好远程协助  拜托各位大佬
  • 写回答

2条回答 默认 最新

  • 玄尺 2018-11-03 06:16
    关注

    这种问题一般都比较好解决,但是如果你依赖这种框架反而不好搞了。
    异常显示你的请求跨域了,你在9105端口返回的页面上向9110发请求,浏览器肯定会禁掉你的请求,这应该不是spring security的问题。有可能是csrf的设置出现问题,
    解决方法,保持csrf检查关闭,并且告诉浏览器在9105端口返回的页面允许跨域。

    import javax.servlet.*;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    /*** 处理跨域问题*/
    public class CrossDomainFilter implements Filter {
        @Override
        public void init(FilterConfig filterConfig) throws ServletException {
        }
    
        @Override
        public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
            HttpServletResponse response = (HttpServletResponse) servletResponse;
            response.setHeader("Access-Control-Allow-Origin", "*");
            response.setHeader("Access-Control-Allow-Methods", "POST, GET");
            response.setHeader("Access-Control-Max-Age", "3600");
            response.setHeader("Access-Control-Allow-Headers", "x-requested-with");
            filterChain.doFilter(servletRequest, servletResponse);
        }
    
        @Override
        public void destroy() {
        }
    }
    

    核心就是在响应头添加跨域标识,至于拦截器用tomcat的filter还是spring的拦截器都可以。

    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog