小编rjd*_*olb的帖子

MethodSecurityInterceptor用于多个方法

我想使用Spring Security保护我的服务层.正如文档中所解释的,我需要使用一个MethodSecurityInterceptor来检查是否允许方法调用.

要确定是否允许给定用户进行服务方法调用,影响调用方法(使用MethodSecurityMetadataSource)所需的角色对我来说是不够的,因为它还取决于传递给方法的参数.正如文档中所建议的,我可以编写自定义AccessDecisionVoter并通过安全对象访问参数(MethodInvocation在本例中).

但是,我的授权逻辑在方法上是不同的.例如,多个方法之间的参数可能不同,授权逻辑也不同.

我看到两个选择:

  • 我可以使用条件逻辑AccessDecisionVoter来确定要使用的调用方法和授权逻辑,但它似乎是一个丑陋的解决方案.
  • 我可以为MethodSecurityInterceptor每个方法定义一个安全.根据Spring文档,a MethodSecurityInterceptor用于保护许多方法,因此它让我觉得还有另一种方法.

方法调用(使用AfterInvocationProvider)后的访问决策存在同样的问题.

有哪些替代方案?

java spring-security

6
推荐指数
1
解决办法
2492
查看次数

在Java中是否有Nashorn的ScriptObjectMirror的公共和具体实例?

我基本上想要去:

ScriptObjectMirror myObj = new ConcreteScriptObjectMirror();
Run Code Online (Sandbox Code Playgroud)

然后像这样调用一些JS,myObj参数在哪里:

function myJSFunc(param) { 
    with(param) { 
        return paramProperty; 
    } 
} 
Run Code Online (Sandbox Code Playgroud)

我现在正在这样做,但Nashorn正在抱怨:

TypeError:无法对非脚本对象应用"with"

因此,我传入的Java对象需要是ScriptObjectMirror的一个实例.

java nashorn

6
推荐指数
1
解决办法
3840
查看次数

Kubernetes:如何使用gitRepo卷?

有人可以举例说明如何gitRepoKubernetes中使用音量类型吗?

该医生说它是一个插件,不知道这意味着什么.无法在任何地方找到示例,我不知道正确的语法.

特别是有拉动特定分支的参数,使用凭证(用户名,密码或SSH密钥)等...

编辑:通过Kubernetes代码这是我到目前为止的想法:

- name: data
  gitRepo:
    repository: "git repo url"
    revision:   "hash of the commit to use"
Run Code Online (Sandbox Code Playgroud)

但是不能看到它使它工作,并不知道如何解决这个问题

docker kubernetes

6
推荐指数
1
解决办法
3918
查看次数

我如何访问ng-content?

我想访问ng-content的内容,首先来获取内容元素的数量,但稍后会有更多的精彩内容.

例如:

@Component({
selector: 'my-container',
template: `
    <div class="my-container">
        <div class="my-container-nav"><a class="my-container-previous"></a></div>
        <div class="my-container-body">
            <div class="my-container-items">
                <ng-content></ng-content>
            </div>
        </div>
        <div class="my-container-nav"><a class="my-container-next"></a></div>
    </div>  
`
})
export class MyContainer implements AfterContentInit {
    @ContentChildren(???) containerItems : QueryList<???>;
    ngAfterContentInit() {
        console.log('after content init: ' + this.containerItems.length);
    }
}
Run Code Online (Sandbox Code Playgroud)

我将什么作为内容儿童的类型?

它们可以是任何东西.我尝试过ElementRef,但这不起作用,总是给出一个零的数.

使用示例:

<my-container>
    <div>some content here</div>
    <another-component [title]="'another component there'"></another-component>
    <div>there's lots of content everywhere</div>
    <span>no assumptions would be fair</span>
</my-container>
Run Code Online (Sandbox Code Playgroud)

我希望看到"在内容init:4之后".

angular

6
推荐指数
1
解决办法
5026
查看次数

如何在 Tomcat 8 中为 Web 应用程序配置 log4j2?

我正在 Tomcat 8.0.24 上将 Web 服务部署为 Web 应用程序 (war)。应用程序 jar 已经过测试,并且运行良好。现在,出于配置和测试 log4j 的目的,我引发了运行时错误(没有连接数据库)。

我正在尝试将 log4j2 设置为仅用于应用程序日志记录(不适用于 tomcat),并且我正在使用 Netbeans 8.0.2 来构建 war。

我已在类路径中包含以下 jar:

log4j-api-2.8.jar
log4j-core-2.8.jar
log4j-web-2.8.jar
log4j-jcl-2.8.jar   
commons-logging.jar 
Run Code Online (Sandbox Code Playgroud)

WEB-INF 中的 log4j2.xml,仅配置根记录器来捕获来自 Web 应用程序的所有内容:

log4j-api-2.8.jar
log4j-core-2.8.jar
log4j-web-2.8.jar
log4j-jcl-2.8.jar   
commons-logging.jar 
Run Code Online (Sandbox Code Playgroud)

我还配置了 catalina.properties,以防万一,覆盖默认的 jarsToSkip:

tomcat.util.scan.StandardJarScanFilter.jarsToScan=log4j-core*.jar,log4j-taglib*.jar,log4j-api*.jar,log4j-web*.jar,log4j-jcl*.jar`
Run Code Online (Sandbox Code Playgroud)

我相信 log4j 已正确初始化为 catalina*.log 状态,因为 status="TRACE":

2017-02-08 14:06:52,355 http-nio-8080-exec-8 DEBUG Log4jServletContextListener ensuring that Log4j starts up properly.
2017-02-08 14:06:52,357 http-nio-8080-exec-8 DEBUG Log4jServletFilter initialized.
Run Code Online (Sandbox Code Playgroud)

还因为创建了日志文件。

但是,来自应用程序(Web 服务 jar)的所有运行时错误消息都以 catalina*.log 结尾,而不是我配置的文件附加程序。此外,catalina*.log 中的那些错误消息不遵循 Appenders 定义中定义的任何模式,因此基本上看起来 log4j2 被忽略了。

我究竟做错了什么?

web-applications log4j2 tomcat8

6
推荐指数
1
解决办法
5654
查看次数

角度-如果将不必要的ngModules导入其他地方,是否会增加文件大小?

我正在使用一个相当大的Angular应用程序,当前在共享模块中拥有所有共享组件和模块,只要需要导出任何内容,我都会导入该模块。

但是,我有一些小的功能模块,它们仅需要共享模块中的很少的模块,然后我是否应该增加体系结构的复杂性和模块化,以便仅导入所需的模块,即使它们已导入其他位置?

Angular 文档指出已缓存已导入到另一个模块中的导入模块,这不是问题,但这意味着,应用程序变慢/变大了吗?

示例:模块1导入A,B,C。模块2导入A,C,D。

如果我在两个模块中都导入了A,B,C,D(例如通过共享模块),会不会导致性能损失?

angular-material angular-cli es6-modules ng-modules angular

6
推荐指数
1
解决办法
1183
查看次数

(使用Azure队列)的最佳实践

我正处于设计基于Azure的应用程序的早期阶段.考虑到我可能期望的需求变化,吸引我进入Azure的一个原因是可扩展性.因此,我试图保持松散耦合,以便我可以在需要时添加实例.

我在构建Azure应用程序时看到的建议包括将Web角色逻辑保持在最低限度,并在工作者角色中完成处理,使用队列进行通信以及某些后端存储(如SQL Azure或Azure表).这对我来说似乎是一个好主意,因为我可以毫无问题地扩展应用程序的任一部分或两部分.但是我很好奇是否有任何最佳实践(或者如果有人有任何经验),最好让网络角色直接与数据存储对话而不是通过队列发送数据?

我正在考虑从web角色进行简单插入的情况 - 我可以将其设置为消息,将其发送到队列中,并让工作者角色拾取并执行插入,它似乎很多双重处理.但是我也很欣赏,从长远来看,这可能是更好的情况,万一web角色不堪重负或者插件需要更复杂的逻辑.

我意识到这可能是一个案例,答案是"它完全取决于情况,检查你的绩效指标" - 但如果有人有任何想法,我会非常感激!

queue azure azure-queues

5
推荐指数
2
解决办法
2405
查看次数

Java Tomcat,底层Netty线程未停止

我正在尝试使用log4j附加程序将日志发送到GrayLog2(log4j2-gelf)。因此,我将我的依赖项添加到pom.xmlconfigure中log4j2.xml以配置我的附加程序。用maven编译整个程序并将其部署到本地tomcat,一切正常。当我尝试关闭tomcat时,会发生问题。如果我不使用Tomcat,Tomcat不会停止运行kill -9 PIDcatalina.out最终结果是:完整的堆栈跟踪

引起我注意的是

java.lang.NoClassDefFoundError:io / netty / util / concurrent / DefaultPromise $ 1

首先,我认为我可能还有另一个依赖项导入netty,这将导致此异常。但是我已经找了一段时间,却找不到其他进口商品。然后我看到了:

原因:java.lang.ClassNotFoundException:非法访问:此Web应用程序实例已被停止。无法加载[io.netty.buffer.PoolArena $ 1]。出于调试目的以及试图终止导致非法访问的线程,将抛出以下堆栈跟踪。

这就是我要问的问题。我的理解是,gelf-appender使用Netty作为与GrayLog服务器异步通信的一种方式。但这是服务器本身。那么Tomcat是否有可能在杀死底层Netty之前停止了父Servlet?哪个会导致这个问题?我正在尝试查找有关Tomcat关闭的方法的文档,但是到目前为止,我什么也没找到,而且我在诊断方面完全错了……

java multithreading tomcat graylog2 log4j2

5
推荐指数
1
解决办法
2372
查看次数

空的 Angular2 项目增加了 IE 11 中的内存

我的公司目前正在构建一个用 Angular 2 编写的非常大的 SPA,我们在内存消耗方面存在一些问题。

在我的测试过程中,我已经注释掉了应用程序中的所有代码,只留下主模块和两个完全空的组件。我们使用 Webpack 进行转译。

在 Chrome 中分析时,内存消耗似乎相当一致,但是当我在 IE11 中执行相同操作时(客户端将主要使用此浏览器),即使刷新浏览器窗口,内存似乎也在不断增加。

以下是 IE 分析器和任务管理器的两个屏幕截图。每个尖峰表示浏览器刷新。另请注意,拍摄堆快照显示我的网站的恒定值为 3.16Mb,因此没有任何问题。

这个问题在完整版中变得更糟,经过几个小时的工作,浏览器可以达到 1Gb 以上。

IE 11 内存分析器

任务管理器:

任务管理器

IE11 中不断增加的内存是否是一个已知问题?如果您想了解有关我的实施的更多信息,请询问。

memory memory-leaks internet-explorer-11 angular

5
推荐指数
0
解决办法
1416
查看次数

Angular2错误 - 是否包含平台模块(BrowserModule)?

我只是想在Angular2中运行一个简单的index.html页面,但它在console中的zone.js中显示错误:

    Unhandled Promise rejection: No ErrorHandler. Is platform module (BrowserModule) included? ; Zone: <root> ; Task: Promise.then ; Value: Error: No ErrorHandler. Is platform module (BrowserModule) included?
    at eval (application_ref.ts:364)
    at ZoneDelegate.invoke (zone.js:391)
    at Object.onInvoke (ng_zone.ts:296)
    at ZoneDelegate.invoke (zone.js:390)
    at Zone.run (zone.js:141)
    at NgZone.run (ng_zone.ts:153)
    at PlatformRef_._bootstrapModuleFactoryWithZone (application_ref.ts:359)
    at eval (application_ref.ts:330)
    at ZoneDelegate.invoke (zone.js:391)
    at Zone.run (zone.js:141) Error: No ErrorHandler. Is platform module (BrowserModule) included?
    at eval (http://localhost:3000/node_modules/@angular/core/bundles/core.umd.js:4531:23)
    at ZoneDelegate.invoke (http://localhost:3000/node_modules/zone.js/dist/zone.js:391:26)
    at Object.onInvoke (http://localhost:3000/node_modules/@angular/core/bundles/core.umd.js:3922:33)
    at ZoneDelegate.invoke (http://localhost:3000/node_modules/zone.js/dist/zone.js:390:32)
    at …
Run Code Online (Sandbox Code Playgroud)

javascript angular2-forms angular2-services angular

5
推荐指数
1
解决办法
7289
查看次数