当前位置: 首页 > 知识库问答 >
问题:

Spring启动应用程序中跨平台的Spring Security性

谢泽语
2023-03-14

如何在跨平台上配置Spring Security,例如我有两个应用程序,一个是服务器端,我在那里做所有的java代码和Spring Security部分,另一个是客户端,那里有所有的angular js和html文件。

我想将客户端的自定义登录页面与Spring Security集成,我该如何实现,以下是我的Spring Security代码。

   public class AppSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {

        http
                .authorizeRequests()
                .antMatchers("/index.html", "/assests/**", "/app/**",
                        "/**/*.js", "/**/*.css", "/**/*.jpg", "/**/*.png",
                        "/**/*.jpg", "/**/*.gif", "#/index.html", "/home",).permitAll()
                .anyRequest().authenticated()
            .and().formLogin()
          .loginPage("/login").failureUrl("/login?error")
            .usernameParameter("username")
            .passwordParameter("password")
          .and()
          .addFilterBefore(new AppCORSFilter(), ChannelProcessingFilter.class)
                .addFilterAfter(new CsrfHeaderFilter(), CsrfFilter.class)
                .csrf().disable();   
}
}

这是我的 CORS 过滤器。

public class AppCORSFilter implements Filter {

    private static final String ALLOWED_ORIGINS = "*";
    private static final String ALLOWED_HTTP_HEADERS = "accept, x-requested-with, access-control-allow-origin,Content-Type,authorization";
    private static final String ALLOWED_HTTP_METHODS = "POST,GET,PUT,OPTIONS,DELETE";

    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
        HttpServletResponse response = (HttpServletResponse) res;

        //String headerValue = request.getHeaders("Access-Control-Request-Headers"); 
        response.setHeader("Access-Control-Allow-Origin", ALLOWED_ORIGINS);
        response.setHeader("Access-Control-Allow-Methods", ALLOWED_HTTP_METHODS);
        response.setHeader("Access-Control-Allow-Headers", ALLOWED_HTTP_HEADERS);
        response.setHeader("Access-Control-Max-Age", "3600");

        HttpServletRequest request = (HttpServletRequest) req;

        if (request.getMethod().equals("OPTIONS")) {
            try {
                response.getWriter().print("OK");
                response.getWriter().flush();
            } catch (IOException e) {
                e.printStackTrace();
            }
        } else {
            chain.doFilter(req, res);
        }
    }

    public void init(FilterConfig filterConfig) {
    }

    public void destroy() {
    }
}

共有1个答案

龚跃
2023-03-14

您可以使用Redis在服务之间共享安全会话。阅读本文档。你也可以从这个链接中找到一个例子。

 类似资料:
  • ASP 应用程序可在运行 Windows NT 4.0 或 Windows 95 及其更新版本的操作系统的计算机上运行。另外,可在 Macintosh 上运行 streamline 版本的 ASP。因为在 Windows 95 和 Macintosh 上的 Personal Web Server 是为个人发布设计的,所以在对 ASP 应用的支持方面有些不同。您可以在 Windows NT Work

  • 问题内容: 我正在研究使用python开发控制台应用程序,该应用程序应该能够在Windows和Linux下运行。为此,我真的很想使用像curses这样的高级控制台库。但是,据我所知,curses在Windows上不可用。 我还有什么其他选择?不幸的是,在Windows下不能使用cygwin。 谢谢你的帮助! 问题答案: 有一个问题。我从未尝试过,但它可能满足您的需求。听起来好像并没有完全的curs

  • 我似乎无法从javaFX应用程序中生成跨平台构建。 在实际的FX应用程序之前,还有一个启动器,这是清单所指向的地方。这就是pom的样子。 我还注意到,无论我选择什么概要文件,它总是生成linux版本,我可以看到这个maven日志: 我一直在看其他的帖子和查看一些视频,这似乎也发生在其他人身上,但看起来有点奇怪。同样奇怪的是,当我为windows生成时,在生成的JAR中看不到任何.dll文件。 正如

  • 我不熟悉测微计和普罗米修斯,我只使用dropwizards的指标。这让我有点困扰,我实际上需要有3个不同的实例来运行以查看指标 带测微计的Spring靴应用程序本身 使用dropwizard,我可以立即公开聚合指标。 这就是为什么我很好奇是否有可能将Prometheus与我的Spring Boots应用程序一起启动以立即公开很好的聚合数据。到目前为止,我还没有找到任何有用的东西,所以我希望这里的某

  • 我在intellij上启动spring boot应用程序时遇到问题,它失败了,并显示以下消息:与目标VM断开连接,地址:'127.0.0.1:49784',传输:'socket' 过程结束,退出代码为255。以前有人遇到过这种情况吗?

  • 问题内容: 我通过阅读一些博客和介绍材料开始使用docker。 我的理解是docker可以将单个应用程序包装到标准化容器中。容器提供了一个沙箱,应用程序需要运行的所有必需资源,并且内部的应用程序始终位于该容器中。这意味着我可以将容器运送到任何地方(不同类型的OS甚至是云平台),并且仍然可以正确运行。 如果我的理解是正确的,那是否意味着微软可以将其办公服包装到一个容器中,并且可以在mac os或li

  • 我是spring的初学者,希望这样做示例项目…我有一个数据库,我想连接到它…我使用了像AutoWired和service这样的注释。但有个问题我解决不了 Controller包中的RegisterationController具有我要调用的服务: 第一个包中的DataManagement类: 第一包中的StudentAccountRepository: 第一包中得学生帐户..引用数据库中的表: M

  • 我是一名PHP、HTML5、CSS3、Javascript、Jquery、Angular的全栈开发人员,热衷于学习任何新技术 现在,我有了一个混合移动应用程序项目(更简单,只需少量的curd操作和web服务),而且它还将是web应用程序,我需要尽快交付。所以我的问题是为正确的工作选择正确的工具 混合应用程序可以使用 平台:Phonegap或cordova,根据我的理解,cordova是Phoneg