我已经苦苦挣扎了好几天了.我是Spring Boot的新手,并且喜欢不使用XML配置的想法.
我创建了一个RESTfull应用程序(使用JSON).我正在按照本教程正确配置身份验证.
我认为我设法使用Java配置重现几乎所有的配置,除了一件事 - AuthenticationEntryPoint
本教程使用http像这样的标记中的属性,并按以下方式定义formLogin:
<http entry-point-ref="restAuthenticationEntryPoint">
<intercept-url pattern="/api/admin/**" access="ROLE_ADMIN"/>
<form-login
authentication-success-handler-ref="mySuccessHandler"
authentication-failure-handler-ref="myFailureHandler"
/>
<logout />
</http>
Run Code Online (Sandbox Code Playgroud)
Spring Security手册中的AuthenticationEntryPoint解释说:
可以使用<http>元素上的entry-point-ref属性设置AuthenticationEntryPoint.
没有提到有关如何使用Java配置执行此操作的任何内容.
那么如何restAuthenticationEntryPoint在没有XML 的情况下"注册"我自己的,以防止在使用formLogin时重定向到登录表单?
下面我将提到我尝试过的内容.
谢谢你们.
在我的尝试中,发现你可以使用basicAuth定义它,如下所示:
@Configuration
@Order(1)
public static class RestWebSecurityConfigurationAdapter extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
if (restAuthenticationEntryPoint == null) {
restAuthenticationEntryPoint = new RestAuthenticationEntryPoint();
}
http
.authorizeRequests()
.antMatchers("/**").hasAnyRole(Sec.ADMIN,Sec.SUPER_USER)
...
.and()
.httpBasic()
.authenticationEntryPoint(restAuthenticationEntryPoint)
Run Code Online (Sandbox Code Playgroud)
但我正在使用这样的表单登录(没有 …
我有这个应用程序使用配置文件"默认"它连接到PostgreSQL数据库并使用Flyway进行迁移.
我想创建另一个名为"devEmbeddedCreate"的配置文件,我需要使用嵌入式数据库服务器(h2),spring.jpa.hibernate.ddl-auto=create-drop在application.properties文件中创建数据库并执行一个不同的"data.sql"脚本来初始化一些表.
如果我将脚本保留为"data.sql"文件名,则每次应用程序启动时都会执行该文件.这是我不想发生的事情,我需要它只在某个特定的配置文件中执行.
我试过的事情:
文档提到可以有一个schema-${platform}.sql文件,您可以spring.datasource.platform在配置中定义平台.它不适用于data-${platform}.sql文件的问题.(这里)
创建了一个EmbeddedDatabaseBuilder.问题是当我使用它时,它不会自动创建数据库并仅应用指定的脚本.无法找到自动创建数据库的方法spring.jpa.hibernate.ddl-auto=create-drop.(这里和这里)
寻找一种将XML配置转换为基于Java的配置的方法,找到了一种创建数据库的方法.经过大量的调整和更改在内存中工作后,它看起来很有前景,但是在启动时(这里)无法找出数据库为什么关闭(并擦除其所有结构)
必须有一种更简单的方法来说出"嘿春天...... data-devEmbeddedCreate.sql当我的个人资料出现时,运行strartup这个脚本devEmbeddedCreate,对吗?
我想实现方法安全性.
我遇到了@Secured和@PreAuth注释的问题.每当我将任何这些添加到我的服务接口时,我都会收到如下例外情况.没有它们,我的应用运行得很好.
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'methodSecurityInterceptor' defined in class path resource [org/springframework/security/config/annotation/method/configuration/GlobalMethodSecurityConfiguration.class]: Instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public org.aopalliance.intercept.MethodInterceptor org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration.methodSecurityInterceptor() throws java.lang.Exception] threw exception; nested exception is org.springframework.security.config.annotation.AlreadyBuiltException: This object has already been built
Run Code Online (Sandbox Code Playgroud)
它是一个REST服务应用程序.
以下是我的配置的一些相关部分.如果我还要添加其他内容,请告诉我.
@Configuration
@EnableGlobalMethodSecurity(securedEnabled = true)
public class WebSecurityConfig {
...
@Autowired
private DatabaseAuthenticationProvider databaseAuthenticationProvider;
...
@Configuration
@Order(1)
public static class RestWebSecurityConfigurationAdapter extends WebSecurityConfigurerAdapter {
...
@Override
protected void configure(HttpSecurity http) throws Exception {
...
http …Run Code Online (Sandbox Code Playgroud) 我有Spring框架创建的REST服务后端,现在我需要找到一种方法来处理来自前端的一些请求中的复杂过滤器.
我正在使用QueryDsl(v3.4.2)框架在整个后端进行查询构建.
我认为使用FIQL或RSQL解析器是最好的方法,所以我试图将jirutka/rsql-parser集成到我的后端项目中.
我是新手,也是QueryDsl.
现在我很困惑所以这是我的求助请求:
有没有人在之前的休息弹簧项目中集成了jirutka/rsql-parser和QueryDsl?而如何?
Jirutka/rsql-parser文档只说:
节点是可访问的,因此要遍历解析的AST(并将其转换为SQL查询),您可以实现提供的RSQLVisitor接口或简化的NoArgRSQLVisitorAdapter.
并且有关于如何执行此操作的以下示例:
Node rootNode = new RSQLParser().parse("name==RSQL;version=ge=2.0");
rootNode.accept(yourShinyVisitor);
Run Code Online (Sandbox Code Playgroud)
看起来很简单吧?
所以我像这样给我的访客打包:
public class RsqlParserVisitor extends NoArgRSQLVisitorAdapter<BooleanExpression> {
Run Code Online (Sandbox Code Playgroud)
实现了接口所需的所有方法.
这里我添加两个例子:
@Override
public BooleanExpression visit(AndNode arg0) {
// TODO Auto-generated method stub
String methodNameTmp = "AndNode";
logger.debug(methodNameTmp + ". arg0: " + arg0);
logger.debug("operator: " + arg0.getOperator().name());
for (Node node : arg0) {
logger.debug(methodNameTmpp + ". node: " + node);
}
return null; //DO SOMETHING TO CREATE A …Run Code Online (Sandbox Code Playgroud) 我一直试图从Java访问Visual Fox Pro数据库一周.我变得绝望,因为我的项目预算和时间框架非常紧密.(和任何其他项目一样,我猜,哈哈哈)
我有一个.dbf,一个.cdx和一个.fpt文件.我需要能够查找记录,提取数据和更新数据.我没有VFP许可证.
我希望有人可以使用一些指针或工作示例.如果唯一的方法是购买一个司机我会愿意根据收到的建议考虑它.
这是我尝试过的简短描述.
我发现这个xBaseJ:java对象可以读取和写入dBase文件.但它并没有支持CDX索引文件.
还发现此示例访问dbf.但我的测试显示了这个例外:java.sql.SQLException: [Microsoft][Controlador ODBC dBase] La tabla externa no tiene el formato esperado.
我想这个错误的英文翻译可能是这样的:java.sql.SQLException: [Microsoft][ODBC dBase Driver] External table is not in the expected format
由于这个错误,我想我需要一个更新的驱动程序.在这个微软页面中说他们不再拥有ODBC驱动程序,并且每个人都应该使用OLE DB Provider.问题是我还没有找到从java中使用它的方法.
据我所知,没有办法直接做到.在这里发现有人在谈论JACOB"thingy",有人评论需要创建一个C++或C#"某事"才能做我需要的东西.我想他正在谈论JACOB项目:一个JAva-COM桥.但我也不知道COM实际上要做什么.
一直未能找到合适的JDBC驱动程序.
谢谢你们.
伊利.