我发现了许多类似的问题,但都没有解决我的问题。我的问题是ROLE_USER
可以访问的功能ROLE_ADMIN
我的spring-security.xml代码如下。
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:s="http://www.springframework.org/schema/security"
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.0.xsd">
<s:http auto-config="true" use-expressions="true">
<s:intercept-url pattern="/index.jsp" access="permitAll" />
<s:intercept-url pattern="/welcome*" access="hasRole('ROLE_USER')" />
<s:intercept-url pattern="/helloadmin*" access="hasRole('ROLE_ADMIN')" />
<s:form-login login-page="/login" default-target-url="/welcome"
authentication-failure-url="/loginfailed" />
<s:logout logout-success-url="/logout" />
</s:http>
<s:authentication-manager>
<s:authentication-provider>
<s:user-service>
<s:user name="asif" password="123456" authorities="ROLE_USER,ROLE_ADMIN" />
<s:user name="raheel" password="123456" authorities="ROLE_USER" />
</s:user-service>
</s:authentication-provider>
</s:authentication-manager>
当我添加<s:global-method-security pre-post-annotations="enabled"/>
我的代码时显示找不到资源错误,并且当我删除我的代码时成功执行但ROLE_USER
可以访问ROLE_ADMIN
函数
我的控制器功能是。
@PreAuthorize("hasRole('ROLE_ADMIN')")
@RequestMapping(value="/delete", method = RequestMethod.GET)
public String DeleteAll(ModelMap model, Principal principal ) {
org.springframework.security.core.userdetails.User activeUser = (org.springframework.security.core.userdetails.User)SecurityContextHolder.getContext().getAuthentication().getPrincipal();
System.out.println("Active user is "+activeUser.getUsername()+"Authorities are "+activeUser.getAuthorities());
return "deleteUsers";
}
你应该有
<s:global-method-security pre-post-annotations="enabled"/>
如果您希望@PreAuthorize
注释起作用。
回答评论:
看来您缺少spring-aop
依赖性。
如果您正在使用Maven,则需要:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${org.springframework.version}</version>
</dependency>
如果没有,你可以从这里拿到罐子。
我实现了spring Security3.2.5,但不幸的是@preauthorize不能用于类和方法。正如我从文档中读到的,@preauthorize应该允许方法和类工作,如果用户在注释中有指定的角色,但我能够运行所有方法或类,而没有任何角色差异。您可以看到security-config.xml和security.context.xml以及我在下面声明@preauthorize注释的类。如果你能
我似乎对JFreeChart XYPlot中的测试注释有问题。我可以如下设置文本注释 我还可以通过添加 但是如果我试图改变字体类型/大小或颜色,它似乎不起作用 字体保持黑色,并为默认类型/大小。奇怪的是,在烛台图表上,功能似乎很好,但不是简单的绘图 其他人有没有经历过这种情况,或者我做错了什么? ======== 我似乎已经解决了这个问题。在我的烛台图表代码中,数据集在构建时添加到图表中。添加文本
文件src/main/webapp/WEB-INF/web.xml包含用于引导CDI的servlet侦听器和BeanManager引用: 通过这些设置,在使用mvn Jetty运行应用程序时,我总是遇到以下错误:run(第一行是最重要的): 应用程序正在运行,但正如异常消息所述:CDI注入在servlet中不可用。 在src/main/resources/log4j.properties中,我增加
我试图使用batchWrite将一个数据插入Dynamodb,但它无法插入数据。它只显示此消息(但没有错误消息)。 然后,无法插入数据。我试着用put,效果很好。我用的是Lambda。这是代码。
我有一些问题。我为我的应用程序使用了Spring Security,当我标记方法注释@安全(“ROLE_ADMIN”)时,它不起作用。 这security-config.xml 身份验证有效。数据库中的角色是正确的。此代码也有效。
问题内容: 我正在尝试让我的Spring MVC应用程序与Spring @Secured批注和AspectJ自动代理一起很好地使用,但是它似乎并没有代理或识别我的@Secured批注。我有一个像这样的控制器: 春季安全性XML如下所示: 码: 上面的内容是由无XML的Spring @Configuration组件加载的,如下所示: 依次使用Servlet 3.0 WebApplicationIni