- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试通过注释使用 Spring Security 来保护我的 RESTful Web 服务的一种方法调用。在我的方法上放置 @Secured 批注时,我遇到了一个奇怪的行为,阻止登录表单被重定向到,而是立即收到 403 响应。
我放在我的配置下面,也许你能给我解释一下哪里出了问题?
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.1.xsd">
<global-method-security secured-annotations="enabled" />
<http auto-config="true">
<http-basic/>
<form-login/>
<!-- With the following line login form is shown -->
<!--<intercept-url pattern="/rest/secured/" access="ROLE_USER"/>-->
</http>
<authentication-manager alias="myAuthenticationManager">
<authentication-provider>
<user-service>
<user name="user" password="user" authorities="ROLE_USER"/>
</user-service>
</authentication-provider>
</authentication-manager>
</beans:beans>
这是我的服务界面:
@Produces({"application/xml"})
public interface KinoteatrService
{
@GET
@Path("/secured")
@Secured("ROLE_USER")
String testSecuredMethod();
}
这是一个实现:
@Path("/")
public class KinoteatrServiceImpl implements KinoteatrService
{
@Override
public String testSecuredMethod() {
return "<html><body>Success, timestamp: " + new Date() + "</body></html>";
}
}
我已经尝试调查原因并启用了 DEBUG 级别的日志记录,这就是我得到的......我不确定我是否正确阅读了日志,但它似乎说客户端已经注册为 ANONYMOUS所以它立即抛出 403 错误代码。
2012-11-12 15:00:56,545 DEBUG [phase.PhaseInterceptorChain] : Invoking handleMessage on interceptor org.apache.cxf.ws.policy.PolicyInInterceptor@55d0f2b6
2012-11-12 15:00:56,545 DEBUG [phase.PhaseInterceptorChain] : Invoking handleMessage on interceptor org.apache.cxf.transport.https.CertConstraintsInterceptor@78e9282b
2012-11-12 15:00:56,545 DEBUG [phase.PhaseInterceptorChain] : Invoking handleMessage on interceptor org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor@6c29b061
2012-11-12 15:00:56,547 DEBUG [utils.JAXRSUtils] : Trying to select a resource class, request path : /secured/
2012-11-12 15:00:56,547 DEBUG [utils.JAXRSUtils] : Trying to select a resource operation on the resource class com.kinoteatr.ua.service.KinoteatrServiceImpl
...
...
2012-11-12 15:00:56,558 DEBUG [utils.JAXRSUtils] : Resource operation testSecuredMethod on the resource class com.kinoteatr.ua.service.KinoteatrServiceImpl has been selected
2012-11-12 15:00:56,559 DEBUG [interceptor.JAXRSInInterceptor] : Request path is: /secured/
2012-11-12 15:00:56,559 DEBUG [interceptor.JAXRSInInterceptor] : Request HTTP method is: GET
2012-11-12 15:00:56,559 DEBUG [interceptor.JAXRSInInterceptor] : Request contentType is: */*
2012-11-12 15:00:56,559 DEBUG [interceptor.JAXRSInInterceptor] : Accept contentType is: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
2012-11-12 15:00:56,559 DEBUG [interceptor.JAXRSInInterceptor] : Found operation: testSecuredMethod
2012-11-12 15:00:56,559 DEBUG [phase.PhaseInterceptorChain] : Invoking handleMessage on interceptor org.apache.cxf.interceptor.OneWayProcessorInterceptor@2221deec
2012-11-12 15:00:56,559 DEBUG [phase.PhaseInterceptorChain] : Invoking handleMessage on interceptor org.apache.cxf.interceptor.ServiceInvokerInterceptor@8eeb6be
2012-11-12 15:00:56,561 DEBUG [aopalliance.MethodSecurityInterceptor] : Secure object: ReflectiveMethodInvocation: public java.lang.String com.kinoteatr.ua.service.KinoteatrServiceImpl.testSecuredMethod(); target is of class [com.kinoteatr.ua.service.KinoteatrServiceImpl]; Attributes: [ROLE_USER]
2012-11-12 15:00:56,561 DEBUG [aopalliance.MethodSecurityInterceptor] : Previously Authenticated: org.springframework.security.authentication.AnonymousAuthenticationToken@9055e4a6: Principal: anonymousUser; Credentials: [PROTECTED]; Authenticated: true; Details: org.springframework.security.web.authentication.WebAuthenticationDetails@957e: RemoteIpAddress: 127.0.0.1; SessionId: null; Granted Authorities: ROLE_ANONYMOUS
2012-11-12 15:00:56,562 DEBUG [vote.AffirmativeBased] : Voter: org.springframework.security.access.vote.RoleVoter@13961789, returned: -1
2012-11-12 15:00:56,562 DEBUG [vote.AffirmativeBased] : Voter: org.springframework.security.access.vote.AuthenticatedVoter@62e32d6a, returned: 0
2012-11-12 15:00:56,563 DEBUG [support.DefaultListableBeanFactory] : Returning cached instance of singleton bean 'cxf'
2012-11-12 15:00:56,566 DEBUG [phase.PhaseInterceptorChain] : Invoking handleMessage on interceptor org.apache.cxf.interceptor.OutgoingChainInterceptor@701f7886
2012-11-12 15:00:56,566 DEBUG [interceptor.OutgoingChainInterceptor] : Interceptors contributed by bus: [org.apache.cxf.interceptor.LoggingOutInterceptor@315b222e, org.apache.cxf.ws.policy.PolicyOutInterceptor@56211352]
2012-11-12 15:00:56,566 DEBUG [interceptor.OutgoingChainInterceptor] : Interceptors contributed by service: []
2012-11-12 15:00:56,566 DEBUG [interceptor.OutgoingChainInterceptor] : Interceptors contributed by endpoint: [org.apache.cxf.interceptor.MessageSenderInterceptor@65640d91, org.apache.cxf.transport.common.gzip.GZIPOutInterceptor@bb6de98]
2012-11-12 15:00:56,566 DEBUG [interceptor.OutgoingChainInterceptor] : Interceptors contributed by binding: [org.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor@12cfd32a]
2012-11-12 15:00:56,567 DEBUG [phase.PhaseInterceptorChain] : Chain org.apache.cxf.phase.PhaseInterceptorChain@a4553e4 was created. Current flow:
setup [PolicyOutInterceptor]
prepare-send [MessageSenderInterceptor, GZIPOutInterceptor]
pre-stream [LoggingOutInterceptor]
marshal [JAXRSOutInterceptor]
2012-11-12 15:00:56,567 DEBUG [phase.PhaseInterceptorChain] : Invoking handleMessage on interceptor org.apache.cxf.ws.policy.PolicyOutInterceptor@56211352
2012-11-12 15:00:56,567 DEBUG [policy.PolicyOutInterceptor] : No binding operation info.
2012-11-12 15:00:56,567 DEBUG [phase.PhaseInterceptorChain] : Invoking handleMessage on interceptor org.apache.cxf.interceptor.MessageSenderInterceptor@65640d91
2012-11-12 15:00:56,567 DEBUG [phase.PhaseInterceptorChain] : Adding interceptor org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor@43300672 to phase prepare-send-ending
2012-11-12 15:00:56,567 DEBUG [phase.PhaseInterceptorChain] : Chain org.apache.cxf.phase.PhaseInterceptorChain@a4553e4 was modified. Current flow:
setup [PolicyOutInterceptor]
prepare-send [MessageSenderInterceptor, GZIPOutInterceptor]
pre-stream [LoggingOutInterceptor]
marshal [JAXRSOutInterceptor]
prepare-send-ending [MessageSenderEndingInterceptor]
2012-11-12 15:00:56,567 DEBUG [phase.PhaseInterceptorChain] : Invoking handleMessage on interceptor org.apache.cxf.transport.common.gzip.GZIPOutInterceptor@bb6de98
2012-11-12 15:00:56,567 DEBUG [gzip.GZIPOutInterceptor] : Response role, checking accept-encoding
2012-11-12 15:00:56,567 DEBUG [gzip.GZIPOutInterceptor] : Accept-Encoding header: [gzip,deflate,sdch]
2012-11-12 15:00:56,567 DEBUG [gzip.GZIPOutInterceptor] : gzip permitted: YES
2012-11-12 15:00:56,567 DEBUG [phase.PhaseInterceptorChain] : Invoking handleMessage on interceptor org.apache.cxf.interceptor.LoggingOutInterceptor@315b222e
2012-11-12 15:00:56,567 DEBUG [phase.PhaseInterceptorChain] : Invoking handleMessage on interceptor org.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor@12cfd32a
2012-11-12 15:00:56,567 DEBUG [phase.PhaseInterceptorChain] : Invoking handleMessage on interceptor org.apache.cxf.interceptor.MessageSenderInterceptor MessageSenderEndingInterceptor@43300672
2012-11-12 15:00:56,567 INFO [interceptor.LoggingOutInterceptor] : Outbound Message
---------------------------
ID: 2
Response-Code: 403
Content-Type: text/xml
Headers: {Date=[Mon, 12 Nov 2012 13:00:56 GMT], Content-Length=[0]}
--------------------------------------
2012-11-12 15:00:56,567 DEBUG [gzip.GZIPOutInterceptor] : Message is smaller than compression threshold, not compressing.
2012-11-12 15:00:56,567 DEBUG [context.HttpSessionSecurityContextRepository] : SecurityContext is empty or contents are anonymous - context will not be stored in HttpSession.
2012-11-12 15:00:56,567 DEBUG [servlet.ServletController] : Finished servicing http request on thread: Thread[http-bio-8080-exec-64,5,main]
2012-11-12 15:00:56,567 DEBUG [access.ExceptionTranslationFilter] : Chain processed normally
2012-11-12 15:00:56,567 DEBUG [context.SecurityContextPersistenceFilter] : SecurityContextHolder now cleared, as request processing completed
最佳答案
登录页面仅针对安全网址显示,但不会针对安全方法显示
安全方法是用于保护您的应用程序的附加层,它要求用户已经过身份验证。因此,您必须使用 intersept-url ... 来显示登录页面。
附言万一。如 Spring Security 文档中所述:
带注释的方法只会对定义为 Spring bean 的实例进行保护(在启用方法安全性的同一应用程序上下文中)。如果您想保护不是由 Spring 创建的实例(例如,使用 new 运算符),那么您需要使用 AspectJ。
关于java - Spring Security 注释禁用登录表单功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13344565/
所以`MKAnnotation's。有趣的东西。 我的问题: 注释的标题和副标题有什么区别?这对注释的视觉组件有何影响? MKPinAnnotationView 和 MKAnnotationView
我正在使用 JBoss 工具将 DB 模式反向工程到 POJO 中。具体来说,我在 hibernatetool ANT 任务中使用了 hbm2java 选项。在 hbm2java 选项下,您可以指定
假设我有这段文字: cat file /* comment */ not a comment /* another comment */ /* delete this * /* multiline
我明白,如果你///在类、字段、方法或属性上方 Visual Studio 将开始为您建立 XML 样式的注释。 但是,我在哪里可以为我的命名空间和/或库添加 XML 注释... 例如: .NET F
int API_VERSION = 21; @TargetApi(API_VERSION)在Android中用于指定该方法/类支持API_VERSION及以下。 我们是否可以镜像类似的东西,指定仅支持
Closed. This question needs to be more focused。它当前不接受答案。
假设我有一个界面如下。 public interface MyInterface{ /** * This method prints hello */ void sayHello();
我已将 Jboss 应用程序迁移到 WebSphere Liberty。我必须删除所有 Jboss 引用库。在这样做的同时,我在某些注释中面临问题。 Jboss 应用程序使用 @SecurityDom
在本教程中,您将了解 JavaScript 注释,为什么要使用它们以及在示例的帮助下如何使用它们。 JavaScript 注释是程序员可以添加的提示,以使代码更易于阅读和理解。JavaScri
我正在建立一个博客,为了发表评论,我有这个 CSS。 #comments { position:absolute; border: 1px solid #900; border-width: 1
我正在尝试在单元格中插入评论。我正在尝试按照代码进行评论,但它没有在创建的 excel 中显示评论。我正在创建 .xls 扩展名。 $objPHPExcel->getActiveSheet()->ge
我正在使用 TS 在 MarionetteJS 上编写项目,我想使用注释来注册路由。例如: @Controller class SomeController { @RouteMapping("so
我有一个应用程序可以在页面上生成大量注释。用户可以单击页面上的任意位置以创建快速注释(例如 Acrobat Pro)可以在一般 中使用一些 javascript 行添加和删除这些注释
是否有 JavaScript 注释? 当然 JavaScript 没有它们,但是是否有额外的库或建议的语言扩展,例如 @type {folder.otherjsmodule.foo} function
Java 中注解的目的是什么?我有一个模糊的想法,认为它们介于注释和实际代码之间。它们在运行时会影响程序吗? 它们的典型用法是什么? 它们是 Java 独有的吗?有 C++ 等价物吗? 最佳答案 注解
其实我们在 Ruby 基础语法 已经比较详细的介绍了 Ruby 语言中的注释 Ruby 解释器会忽略注释语句 注释会对 Ruby 解释器隐藏一行,或者一行的一部分,或者若干行。 Ruby 中的注
我正在 try catch VBA 注释。到目前为止,我有以下内容 '[^";]+\Z 它捕获以单引号开头但在字符串结尾之前不包含任何双引号的任何内容。即它不会匹配双引号字符串中的单引号。 dim s
有没有办法在'svn commit'上将提交注释添加到更改的文件中。有人告诉我有一种方法可以用 cvs 做到这一点,但我们使用 svn。目前,我们使用“$Revision”关键字将修订号添加到更改的文
我正在尝试通过 ManyToMany 注释自动对报告的结果进行排序 @OrderBy : /** * @ORM\ManyToMany(targetEntity="Artist", inversedB
我正在使用 JBoss 5 GA,我创建了一个测试 session bean 和本地接口(interface)。我创建了一个 servlet 客户端。我尝试使用 @EJB 将接口(interface)
我是一名优秀的程序员,十分优秀!