Spring security Spring安全-CouchDB

Spring security Spring安全-CouchDB,spring-security,Spring Security,我想写使用Spring安全性的授权。用户数据将保存在couchDB中。我有问题,使它有可能访问的方法 @PreAuthorize("hasAuthority('ROLE_ADMIN')") @Transactional public void deleteDriver(Driver driver) { dataService.deleteDrivers(driver); }.. 此批注@PreAuthorize未工作。我写道: <global-me

我想写使用Spring安全性的授权。用户数据将保存在couchDB中。我有问题,使它有可能访问的方法

@PreAuthorize("hasAuthority('ROLE_ADMIN')")
    @Transactional
    public void deleteDriver(Driver driver) {
        dataService.deleteDrivers(driver);
    }..
此批注
@PreAuthorize
未工作。我写道:

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


在application-context-security.xml中

我打赌您已经解决了您的问题,但也许这可以帮助其他人

1-应用程序的配置

您需要添加自己的用户详细信息服务的实现

public class AppConfig extends WebMvcAutoConfiguration {
...
    @Bean
    public UserSecurityService userSecurityService() {
        return new UserSecurityService();
    }
...
}
2-用户实体

public class CustomUserDetail extends org.springframework.security.core.userdetails.User {

    public CustomUserDetail(String username, String password, Collection<? extends GrantedAuthority> authorities) {
        super(username, password, authorities);
    }
}
@Component
public class UserRepository extends CouchDbRepositorySupport<User> {
        ...
        @View( name = "findUserByUsername", map = "function(doc) { if (doc.docType == 'User' ) emit( doc.username, doc._id ) }")
        public User findUserByUsername(String username) {
            return queryViewReturnSingleEntity("findUserByUsername",username);          
        }
        ...
}
现在,您可以添加以下内容:

@PreAuthorize("hasRole('ROLE_SUPER_USER')")

验证用户角色的访问权限。

我打赌您已经解决了问题,但这可能会帮助其他人

1-应用程序的配置

您需要添加自己的用户详细信息服务的实现

public class AppConfig extends WebMvcAutoConfiguration {
...
    @Bean
    public UserSecurityService userSecurityService() {
        return new UserSecurityService();
    }
...
}
2-用户实体

public class CustomUserDetail extends org.springframework.security.core.userdetails.User {

    public CustomUserDetail(String username, String password, Collection<? extends GrantedAuthority> authorities) {
        super(username, password, authorities);
    }
}
@Component
public class UserRepository extends CouchDbRepositorySupport<User> {
        ...
        @View( name = "findUserByUsername", map = "function(doc) { if (doc.docType == 'User' ) emit( doc.username, doc._id ) }")
        public User findUserByUsername(String username) {
            return queryViewReturnSingleEntity("findUserByUsername",username);          
        }
        ...
}
现在,您可以添加以下内容:

@PreAuthorize("hasRole('ROLE_SUPER_USER')")

验证用户角色的访问权限。

请重新措辞好吗?我发现很难看到有人问什么。有什么好的教程可以将Spring Security Core实现到CouchDB吗?@code4jhon如果您仍然需要它,我会回答这个问题,它可能会有帮助:)请您重新措辞好吗?我发现很难看到有人问什么问题。有什么好的教程可以将Spring Security Core实现到CouchDB吗?@code4jhon如果您仍然需要它,我会回答这个问题,它可能会有帮助:)