首页 > 解决方案 > 有没有办法不使用内存中的身份验证?@PreAuthorize、@Secured、@RoleAllowed 不起作用

问题描述

问题: 1.如何将权限链接到注释?意图是使用当前注释来锁定某些 API:@RoleAllowed("ROLE_VIEWER","ROLE_EDITOR"),@Secured({ "ROLE_VIEWER", "ROLE_EDITOR" }),@PreAuthorize("hasRole('USER') 或 hasRole( '行政')”)。@EnableGlobalMethodSecurity(prePostEnabled=true,securedEnabled=true,jsr250Enabled=true) 已被使用。DB如下所示。Firebase 用于生成/验证。

CREATE TABLE IF NOT EXISTS USER (
    ID VARCHAR (50) NOT NULL PRIMARY KEY,
    NAME VARCHAR (50) NOT NULL,
    LOGIN VARCHAR (50) NOT NULL,
    STATUS SMALLINT NOT NULL,
    CREATED_AT TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    UPDATED_AT TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    CONSTRAINT UC_USER_LOGIN UNIQUE (LOGIN));
    
    CREATE TABLE IF NOT EXISTS AUTHORITY (
    ID VARCHAR (50) NOT NULL PRIMARY KEY,
    NAME VARCHAR (50) NOT NULL,
    DESCRIPTION VARCHAR (255) NOT NULL,
    CREATED_AT TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    UPDATED_AT TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    CONSTRAINT UC_AUTHORITY_NAME UNIQUE (NAME));
    
    CREATE TABLE IF NOT EXISTS USER_AUTHORITY (
    ID VARCHAR (100) NOT NULL PRIMARY KEY,
    USER_ID VARCHAR (50) NOT NULL REFERENCES USER (ID) ON DELETE CASCADE,
    AUTHORITY_ID VARCHAR (50) NOT NULL REFERENCES AUTHORITY (ID) ON DELETE CASCADE,
    CREATED_AT TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    UPDATED_AT TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP);

标签: firebasespring-bootkotlinspring-security

解决方案


推荐阅读