当前位置: 首页 > 知识库问答 >
问题:

Spring安全。受保护的批注不起作用

潘琨
2023-03-14

我有一些问题。我为我的应用程序使用了Spring Security,当我标记方法注释@安全(“ROLE_ADMIN”)时,它不起作用。

@Secured("ROLE_ADMIN")
@RequestMapping(value = "/greeting",produces = "application/json")
public @ResponseBody List<UserEntity> greeting() {
    return userService.getAllCurrentUsers();
}

这security-config.xml

<global-method-security secured-annotations="enabled" pre-post-annotations="enabled"/>

<http pattern="/resources/**" security="none"/>
<http pattern="/loginSecurity" security="none"/>
<http pattern="/favicon.ico" security="none" />
<http use-expressions="true">
    <intercept-url pattern="/**" access="hasRole('ROLE_USER') or hasRole('ROLE_ADMIN')"/>
    <form-login login-page="/loginSecurity" default-target-url="/workspace"/>
</http>

<authentication-manager>
    <authentication-provider>
        <password-encoder hash="bcrypt" />
        <jdbc-user-service data-source-ref="dataSource"
                           authorities-by-username-query="SELECT userentity.username , roleentity.role_name from userentity
                                                    JOIN userentity_roleentity ON userentity.userid = userentity_roleentity.userlist_userid
                                                    JOIN roleentity ON userentity_roleentity.rolelist_role_name = roleentity.role_name
                                                    WHERE userentity.username = ?"
                           users-by-username-query="SELECT username,pwd,enable FROM userentity where username = ?"/>
    </authentication-provider>
</authentication-manager>

身份验证有效。数据库中的角色是正确的。此代码也有效。

sec:authorize access="hasRole('ROLE_ADMIN')">
<button onclick="loadHeadRef('workspace','settings')">
  <img src='<spring:url value="/resources/image/settings.png"/>' alt="">Settings</button>
</sec:authorize>

共有1个答案

杨研
2023-03-14

尝试使用@PreAuthorize

@PreAuthorize("hasAnyRole('ROLE_USER','ROLE_ADMIN','ROLE_APPROVAL_PENDING')")

在spring servlet中。xml放入以下内容

<security:global-method-security
        pre-post-annotations="enabled" secured-annotations="enabled" />
    <mvc:annotation-driven />
 类似资料:
  • 如果当前请求是安全的,有没有办法“询问”Spring Security性?因为即使我通过了身份验证,我也要检测我是在受安全保护的URL中还是在匿名/公共页面中 提前感谢!

  • 我是新来的,尽管我以前已经在这里找到了很多问题的答案。 现在我正在寻求帮助:我的小REST API上有这个小示例资源: 为了过滤角色,我有以下SecurityContext的实现: 以及容器请求过滤器的这种实现: 这是我的应用程序类: 有了所有这些,当我请求URI问候/all时,一切都很好,显示字符串“Hello,大家好!”。但是当我请求URI问候/admin时,即使我的isUserInRole方

  • securityconfig.java

  • 本文向大家介绍操作系统的保护与安全,包括了操作系统的保护与安全的使用技巧和注意事项,需要的朋友参考一下 保护和安全性要求保护计算机资源,例如CPU,软件,内存等。这扩展到操作系统以及系统中的数据。这可以通过确保操作系统中的完整性,机密性和可用性来完成。该系统必须防止未经授权的访问,病毒,蠕虫等。 保护与安全威胁 威胁是一种本质上是恶意的程序,会对系统造成有害影响。系统中发生的一些常见威胁是- 病毒

  • 我正在使用Spring云安全和Oauth2来保护我的微服务。现在Pom如下: http://maven.apache.org/xsd/maven-4.0.0.xsd" Spring靴主要等级如下: 授权服务器配置如下: 注意:身份验证管理器自动连接到授权配置中 在下面的类中,身份验证管理器被配置并返回为abean,以便可以自动连接到上面的类: 现在application.properties如下:

  • 问题内容: 我发现了许多类似的问题,但都没有解决我的问题。我的问题是可以访问的功能 我的spring-security.xml代码如下。 当我添加 我的代码时显示找不到资源错误,并且当我删除我的代码时成功执行但可以访问函数 我的控制器功能是。 问题答案: 你应该有 如果您希望注释起作用。 回答评论: 看来您缺少依赖性。 如果您正在使用Maven,则需要: 如果没有,你可以从这里拿到罐子。