我想添加spring mvc拦截器作为Java配置的一部分.我已经有一个基于xml的配置,但我正在尝试转向Java配置.对于拦截器,我知道可以从弹簧文档中这样做 -
@EnableWebMvc
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LocaleInterceptor());
}
}
Run Code Online (Sandbox Code Playgroud)
但我的拦截器正在使用一个自动装入其中的弹簧豆,如下所示 -
public class LocaleInterceptor extends HandlerInterceptorAdaptor {
@Autowired
ISomeService someService;
...
}
Run Code Online (Sandbox Code Playgroud)
SomeService类如下所示 -
@Service
public class SomeService implements ISomeService {
...
}
Run Code Online (Sandbox Code Playgroud)
我正在使用注释@Service来扫描bean,并且没有在配置类中指定它们@Bean
据我所知,由于java配置使用new来创建对象,因此spring不会自动将依赖项注入其中.
我如何添加这样的拦截器作为java配置的一部分?
我在我的项目中使用spring security oauth.我通过在Spring安全性ResourceServerConfigurerAdapter中配置来从身份验证中排除一些URL.我补充道http.authorizeRequests().antMatchers(url).permitAll().
现在,我所看到的是,如果我没有将Authorization标头传递给这些网址,则不会对其进行身份验证.并且API被正确调用.
如果使用Authorization标头进行调用,则它会验证令牌并在未验证令牌时使调用失败.
我的问题是我需要做什么才能在我拥有permitAll的请求中忽略令牌.
authentication spring spring-security spring-security-oauth2
我有两个Web应用程序,一个用于AngularJS中的Web UI,另一个用于Java中的REST Web服务.两者都部署在不同的域上.
应用程序使用cookie进行身份验证.每当用户输入有效的用户名和密码时,服务器返回包含令牌的仅http cookie,并且cookie将在所有请求中传递.我在两个应用程序上启用了CORS,这就是会话cookie正常工作的原因.
现在,我正在尝试为此添加CSRF保护.我试图使用csrf cookie,在服务器中将发送csrf cookie(而不是httponly)作为REST响应的一部分,UI将从cookie读取值并将其传递到csrf令牌头中以用于其他REST调用.
我面临的这种方法的问题是,由于服务器位于不同的域中,我无法使用AngularJs中的$ cookies读取cookie.有没有办法读取该cookie的值?如果没有,那么我可以用其他方式实现CSRF吗?
我还尝试在浏览器中在Web UI上实现csrf cookie的创建,但是浏览器不会将cookie作为其在不同域中的web服务发送.
那么,我的问题是如何为这种情况实施csrf保护?
我有一个 spring boot webapp,我在其中定义了 REST API。我正在使用 Spring Security 来保证 REST API 安全。
我用 RestController 注释了我的控制器类。我最近将 spring boot、mvc 和 security 更新到最新版本。
我现在看到在我的负面情况下,在更新之前它返回 json 错误响应,但现在更新后,它返回 html 错误响应。
在更新之前,它给出了以下错误响应-
{
"timestamp": "2018-05-21T18:22:37.105+0000",
"status": 500,
"error": "Internal Server Error",
"message": "Error message.",
"path": "<API path>"
}
Run Code Online (Sandbox Code Playgroud)
更新后,它给出了以下响应。
<!DOCTYPE html>
<html>
<head>
<title>Apache Tomcat/8.0.51 - Error report</title>
<style type="text/css">H1 {font-family:Tahoma,Arial,sansserif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}.line {height: 1px; background-color: #525D76; border: none;}</style>
</head>
<body>
<h1>HTTP …Run Code Online (Sandbox Code Playgroud) 我正在从运行在默认端口的服务器向客户端发送一个httponly/secure cookie.从客户端,请求没有为此指定任何端口号,并在响应中返回cookie.
当使用不同端口对同一服务器进行另一次呼叫时,cookie不会发送到服务器.如果我在没有任何端口号的情况下拨打电话,则会发送cookie.
我在这里错过了什么?是否需要启用任何内容才能跨域发送cookie.根据RFC 6265,cookie不是特定于端口的,那么具体的浏览器行为是否会阻止这种情况?我尝试过Firefox和Chrome,但两者都不兼容.
我试图检查脚本,如果该脚本是用-x标志执行的,这是用于shell脚本的调试.有没有办法检查脚本本身是否设置了-x.我想有条件地检查并做一些事情,如果设置.
我在AngularJS中有一个UI,可以用Java调用REST Web服务。两者都部署在不同的域上。webservice和AngularJS都启用了CORS。
Web服务将cookie作为一个REST请求的一部分返回。Cookie中包含Web服务域。
在我的AngularJS应用中,我将向服务器发出REST请求,然后必须读取作为响应返回的cookie。
我如何读取从该Web服务返回的cookie?我已阅读到我无法访问来自不同域的cookie。我还不完全了解这实际上是如何工作的。
另一个问题是,如果我无法读取Cookie,那么可以从AngularJS应用中为该域设置Cookie,并将其发送到Web服务吗?
我需要在 golang 代码中进行 http 调用。我的服务器代码将创建 http 请求对象并将其放入数据库中。
工作代码将从数据库获取数据,并且应该能够使用持久请求对象进行 http 调用。
我可以通过序列化http请求直接将请求对象持久化到数据库中还是需要在数据库中单独添加method/URL/body?
cookies ×3
spring ×3
angularjs ×2
http ×2
java ×2
spring-mvc ×2
bash ×1
browser ×1
cross-domain ×1
csrf ×1
firefox ×1
go ×1
interceptor ×1
javascript ×1
rest ×1
sh ×1
shell ×1
spring-boot ×1
web-services ×1