我让spring boot应用程序在域A上运行。它的目的是公开一些RESTendpoint。
此外,我有角度8应用程序。它可以部署在同一个域A或其他域B中。spring boot应用程序知道应用程序部署在哪个域上。
我需要配置Spring Security性,因此它将仅接受来自角应用程序的特定endpoint上的请求。但是,一些endpoint需要了解角色
例如:
我将非常感谢一些建议的最佳方法为此
在您的WebSecurityConfig类中,它从WebSecurityConfigrerAdapter(org.springframework.security.config.annotation.web.configuration.WebSecurityConfigrerAdapter
)扩展而来,编辑您的配置mwthod如下
@Override
protected void configure(HttpSecurity http) throws Exception {
http.cors().and().csrf().disable().
authorizeRequests()
.antMatchers("/api/v1/resources/admin/**").hasRole("admin")
.antMatchers("/api/v1/payments/**").permitAll()
.anyRequest().authenticated()
...
...
}
您可以通过在securityConfig中应用特定于URL的过滤器来实现这一点。java类,其中扩展了WebSecurityConfigureAdapter类,您还需要从Angular应用程序传递一个自定义头。
@Autowired
private HeaderFilter headerFilter;
@Override
protected void configure(HttpSecurity http) throws Exception {
http.antMatcher("/api/v1/resources/**")
.addFilterBefore(headerFilter, BasicAuthenticationFilter.class)
.authorizeRequests()
.anyRequest().authenticated();
}
您可以创建HeaderFilter。类和内部doFilter()方法实现如下。
public class HeaderFilter extends GenericFilterBean {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpRequest = (HttpServletRequest) request;
Enumeration<String> headerNames = httpRequest.getHeaderNames();
if (headerNames != null) {
while (headerNames.hasMoreElements()) {
request.getHeader("YOUR_CUSTOM_HEADER");
//get Angular app specific header and it's value whether it is correct then true else stop filter chain.
if(FOUND){
chain.doFilter(request, response);
} else {
throw Exception();
}
}
}
}
}
您还可以在securityconfig中为管理员访问添加基于角色的附加身份验证。JAVA
问题内容: 我有一个Angular应用程序,我想在ReactJS中编写应用程序的某些部分。 如何将ReactJS应用程序注入现有的Angular应用程序中?我还需要组件的双向通信。 问题答案: 您可能需要其他选项,所以我在第2段中编写了它: 无需通信的Angular-ReactJS 具有双向通信的Angular-ReactJS 下面的所有代码都是最少的,无法在提出的步骤中显示问题。在GitHub上
问题内容: 我构建了phoneGap应用程序,它是一个Facebook风格的应用程序,其想法是用户可以发布消息,而他们的朋友可以对此消息发表评论。该应用基于html,js和phoneGap。我有一台带有mysql数据库的服务器。我的问题是如何从远程数据库中拉出和推送数据。我是个初学者,所以我不太确定如何做到这一点。即使加载完成后,我也需要实时更新页面 我用Google搜索它,我意识到我需要使用Aj
我有Jasper Reports服务器(安装在www.example.net上)和一个单独的Java/JSP应用程序(安装在www.example.net上),我在寻找不同的选项来生成报告。 选项1(当前工作解决方案) 我目前的工作解决方案是用户登录到Java /JSP应用程序,并选择一个报告。应用程序创建报告的XML表示,并将其保存为,然后使用以下代码将其发送到Jasper报告服务器: (请注意
问题内容: 我试图弄清楚如何通过使用Android应用程序在网页上显示实时数据。 例如,用户正在使用android应用并获得评分(回答问题)。我的网页将实时显示分数。 IV得出使用Redis的结论,但是我需要什么才能使其正常工作?我是否需要一个可与我的网页进行通信的Web套接字。这个套接字可以是python,它在其中访问数据库,然后按顺序响应分数? 我正在努力寻找这种方法到底是怎么工作的,因为这对
我正在试用一个简单的示例。我能够运行服务器应用程序和客户端应用程序来彼此通信。我现在需要了解一个教程,说明两个客户机如何通过服务器相互通信。 我怎么能这么做?有人能给我指出一个好的教程或者解释如何在Java中实现这一点吗
问题内容: 我将使用keycloak保护我的golang应用程序,但keycloak本身不支持go语言。 github中有一些go适配器作为一个开放项目,已经将openId connect协议实现为提供程序服务,但是它们没有提供有关如何将库与应用程序集成的示例或文档。 如何使用Golang与Keycloak互动? 问题答案: 如您所指出的,没有用于golang的官方keycloak适配器。但是实现