有没有办法在@Preauthorize块中创建更具表现力的语句?这是我发现自己重复的一个例子,因为@Preauthorize不是非常聪明的开箱即用.
@RequestMapping(value = "{id}", method = RequestMethod.DELETE)
public void deleteGame(@PathVariable int id, @ModelAttribute User authenticatingUser) {
Game currentGame = gameService.findById(id);
if(authenticatingUser.isAdmin() || currentGame.getOwner().equals(authenticatingUser)) {
gameService.delete(gameService.findById(id));
} else {
throw new SecurityException("Only an admin, or an owner can delete a game.");
}
}
Run Code Online (Sandbox Code Playgroud)
我更喜欢的是类似的东西.
@RequestMapping(value = "{id}", method = RequestMethod.DELETE)
@Preauthorize(isAdmin(authenicatingUser) OR isOwner(authenicatingUser, id)
public void deleteGame(@PathVariable int id, @ModelAttribute User authenticatingUser, @ModelAttribute currentGame ) { //I'm not sure how to add this either :(
gameService.delete(gameService.findById(id));
}
Run Code Online (Sandbox Code Playgroud)
部分问题是我需要对数据库进行查询以获取一些这些东西以验证权限,例如查询数据库以获取游戏副本,然后将游戏所有者与制作人员进行比较请求.我不确定所有这些是如何在@Preauthorize注释处理器的上下文中运行的,或者我如何将事物添加到@Preauthorize("")值属性中可用的对象集合中.
我很尴尬地问这个并且它很可能是重复的,但是我的谷歌搜索结果很短(我想错误地搜索)并且这样一个基本问题激怒了我.
我有一个包含我不知道的值的数组.
在java中,看看第二个条目,我会使用类似的东西
var = array[1]
Run Code Online (Sandbox Code Playgroud)
我理解Php数组是键值对,但是我怎样才能简单地查看数组中的第n个值来查看它的键值对,甚至更好,然后只访问键/值?
注意:我知道这个线程,但它已经很老了,而且,解决方案对我不起作用.
我正在使用App Engine和Cloud SQL,我想在所有应用程序的当前用户之间共享一个开放连接池.我已经尝试了几个连接池实现,它们都与本地开发服务器完美配合,但是,当部署到云时,它们会失败.我想原因是App Engine受限制的"沙箱"环境.有没有人知道在App Engine上工作的JDBC连接池?
Apache Commons DBCP
...
Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.apache.commons.dbcp2.PoolableConnection
at com.google.appengine.runtime.Request.process-a49d46300800d0ca(Request.java)
at org.apache.commons.dbcp2.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:254)
at org.apache.commons.dbcp2.BasicDataSource.validateConnectionFactory(BasicDataSource.java:2162)
at org.apache.commons.dbcp2.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:2148)
at org.apache.commons.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:1903)
at org.apache.commons.dbcp2.BasicDataSource$PaGetConnection.run(BasicDataSource.java:2267)
at org.apache.commons.dbcp2.BasicDataSource$PaGetConnection.run(BasicDataSource.java:2263)
at java.security.AccessController.doPrivileged(AccessController.java:63)
at org.apache.commons.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:1404)
...
Run Code Online (Sandbox Code Playgroud)
Tomcat JDBC连接池
...
Caused by: java.lang.SecurityException: Unable to get members for class org.apache.tomcat.jdbc.pool.DataSource
...
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
... 45 more
Caused by: java.lang.NoClassDefFoundError: javax/management/MalformedObjectNameException
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2517)
... 45 more
Caused by: …Run Code Online (Sandbox Code Playgroud) java google-app-engine connection-pooling jdbc google-cloud-sql
目前,我已经在谷歌应用引擎上部署了我的django项目.我需要运行python manage.py migrate命令,以便auth_user在我的google云实例上创建表.但是不知道在哪里运行这个命令.
我们有一个在App Engine上运行并使用Spring框架的应用程序.最近我们添加了一些基于AOP的新功能.我们决定使用@AspectJ样式,因此我们添加<aop:aspectj-autoproxy>到基于XML的配置中并实现了各自的方面.一切都在开发服务器上运行正常,但是,当部署到云环境时,我们java.lang.StackOverflowError每次初始化应用程序时都会得到.
无法创建并导致错误的bean是使用@Configuration注释注释的配置类.看来基本上任何配置bean都可能导致错误.
您可以在下面看到相应的堆栈跟踪.
org.springframework.web.context.ContextLoader initWebApplicationContext: Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'objectifyConfig' defined in URL [jar:file:/base/data/home/apps/{app-id}/8.372375422460842231/WEB-INF/lib/{app-name}-1.0-SNAPSHOT.jar!/{path-to-class}/ObjectifyConfig.class]: Initialization of bean failed; nested exception is java.lang.StackOverflowError
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:529)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:296)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:293)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:628)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:389)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:294)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112)
at org.mortbay.jetty.handler.ContextHandler.startContext(ContextHandler.java:548)
at org.mortbay.jetty.servlet.Context.startContext(Context.java:136)
at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)
at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517)
at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.createHandler(AppVersionHandlerMap.java:219)
at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.getHandler(AppVersionHandlerMap.java:194)
at com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:134)
at com.google.apphosting.runtime.JavaRuntime$RequestRunnable.run(JavaRuntime.java:446)
at com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:435) …Run Code Online (Sandbox Code Playgroud) 我是Spring的新手,我有一个bean声明,如下所示.
<bean id="mybean" class="" scope="prototype">
<property name='typeOf' value='#{typeOfBuilder.getKeyFor("OPEN_DATE").getId()}'/>
</bean>
Run Code Online (Sandbox Code Playgroud)
typeOf是一种Integer类型,它是在这种情况下typeOfBuilder构建的另一个表的键.KeyOPEN_DATE
这段代码工作正常,但有一个限制.OPEN_DATE是一个NON-MANAGE Spring Bean像下面这样的常量.
public final class Constants
{
public final static String KEY_FOR_OPEN_DATE = "OPEN_DATE";
}
Run Code Online (Sandbox Code Playgroud)
并强烈建议能够参考它!!
这样的事情.
<util:constant id="PATH_TO_CONSTANT" static-field="myPath"/>
<property name='typeOf' value='#{typeOfBuilder.getKeyFor(PATH_TO_CONSTANT).getId()}'/>
Run Code Online (Sandbox Code Playgroud)
任何帮助都非常感激.
有时,当我们轮询BigQuery作业时,我们的请求最终会得到SocketTimeoutException.您可以在下面看到引发异常的代码.
this.bigquery.jobs().get(projectNumber, jobId).execute();
Run Code Online (Sandbox Code Playgroud)
这是我们得到的错误消息.
...
Caused by: java.net.SocketTimeoutException:
Timeout while fetching URL: https://www.googleapis.com/bigquery/v2/projects/######/jobs/######
...
Run Code Online (Sandbox Code Playgroud)
我的问题是,是否有办法延长超时.有谁知道默认超时是什么?
我使用Spring MVC实现了简单的REST服务.我决定用Springfox和Swagger 2.0来描述它们.在我开始添加安全模式和上下文之前,一切似乎都没问题.我对某些端点使用HTTP基本身份验证,对其他端点使用基于令牌的身份验证.无论我做什么,我都看不到任何设置HTTP Basic身份验证凭据或在Swagger UI中指定令牌的选项.以下是我的配置.为简单起见,我在这里将两个模式应用于所有端点.
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket apiV1() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build()
.pathMapping("/api/v1")
.securitySchemes(newArrayList(new BasicAuth("xBasic"),
new ApiKey("X-Auth-Token", "xAuthToken", "header")))
.securityContexts(newArrayList(xBasicSecurityContext(), xAuthTokenSecurityContext()))
}
private SecurityContext xBasicSecurityContext() {
SecurityContext.builder()
.securityReferences(newArrayList(new SecurityReference("xBasic",
new AuthorizationScope[0])))
.build()
}
private SecurityContext xAuthTokenSecurityContext() {
SecurityContext.builder()
.securityReferences(newArrayList(new SecurityReference("xAuthToken",
new AuthorizationScope[0])))
.build()
}
Run Code Online (Sandbox Code Playgroud) *注意:我知道这个问题,但是,它与Docker Toolbox有关,而不是与Docker Desktop for Mac有关,似乎每个工具都使用不同的位置来本地存储Docker图像
在哪里可以找到通过Docker Desktop for Mac从Docker Hub中提取的docker图像?
我尝试通过以下命令验证Docker是否正在运行.
docker run hello-world
Run Code Online (Sandbox Code Playgroud)
因此,Docker守护程序从Docker Hub中取出了"hello-world"图像,但我无法找到它.
java ×6
spring ×3
arrays ×1
django ×1
docker ×1
jdbc ×1
jdbctemplate ×1
macos ×1
mysql ×1
php ×1
python ×1
security ×1
spring-aop ×1
spring-data ×1
spring-el ×1
spring-jdbc ×1
spring-mvc ×1
springfox ×1
swagger-2.0 ×1
swagger-ui ×1