亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Spring Security Acl 對象

Spring Security Acl 對象

泛舟湖上清波郎朗 2022-07-06 18:37:20
我創建 Acl 的服務是這樣的:@AutowiredJdbcMutableAclService aclService;public void createAcl(AclDTO aclDTO) throws ClassNotFoundException {    ObjectIdentity oi = new ObjectIdentityImpl(getClass().getClassLoader().loadClass(aclDTO.getClassPath()),        aclDTO.getObjectIdentityId());    Sid sid = new PrincipalSid(aclDTO.getSid());    Permission p = getPermission(aclDTO.getPermissionDesc());    // Create or update the relevant ACL    MutableAcl acl = null;    try {        acl = (MutableAcl) this.aclService.readAclById(oi);    } catch (NotFoundException nfe) {        acl = aclService.createAcl(oi);    }    // Now grant some permissions via an access control entry (ACE)    acl.insertAce(acl.getEntries().size(), p, sid, true);    this.aclService.updateAcl(acl);}但是這個類似乎有問題,當它運行時,我得到了這樣的錯誤:2019-02-25 11:02:18.410 錯誤 10608 --- [XNIO-2 task-1] cssacl.aop.logging.LoggingAspect:com.spring.security.acl.service.AccessGrantService.createAcl() 中的異常原因= 'com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: PROCEDURE security_acl.identity 不存在'并且異常 = 'StatementCallback; 錯誤的 SQL 語法 [call identity()]; 嵌套異常是 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: PROCEDURE security_acl.identity 不存在'org.springframework.jdbc.BadSqlGrammarException: StatementCallback; 錯誤的 SQL 語法 [call identity()]; 嵌套異常是 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: PROCEDURE security_acl.identity 不存在于 org.springframework.jdbc.support.SQLExceptionSubclassTranslator.doTranslate(SQLExceptionSubclassTranslator.java:93) at org.springframework.jdbc.support。 AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72) at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81) at org.springframework.jdbc.core.JdbcTemplate.translateException(JdbcTemplate.java:1398) at org .springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:388) 在 org.springframework.jdbc.core。如果有人可以幫助我解決這個問題,我將不勝感激!
查看完整描述

2 回答

?
慕后森

TA貢獻1802條經驗 獲得超5個贊

看來您正在使用 MySQL。


我遇到了同樣的錯誤,并通過如下設置 JdbcMutableAclService 解決了它:


// Based on https://github.com/eugenp/tutorials/blob/master/spring-security-acl/src/main/java/org/baeldung/acl/config/ACLContext.java

@Bean

public JdbcMutableAclService aclService() {

  JdbcMutableAclService jdbcMutableAclService = new JdbcMutableAclService(dataSource, lookupStrategy(), aclCache());


  // TODO: for MySQL ONLY

  jdbcMutableAclService.setClassIdentityQuery("SELECT @@IDENTITY");

  jdbcMutableAclService.setSidIdentityQuery("SELECT @@IDENTITY");


  return jdbcMutableAclService;

}

希望這有幫助。


查看完整回答
反對 回復 2022-07-06
?
慕森卡

TA貢獻1806條經驗 獲得超8個贊

使用 PostgreSQL 時的解決方案JdbcMutableAclService:


@Bean

public MutableAclService aclService() {

    JdbcMutableAclService aclService = new JdbcMutableAclService(dataSource, lookupStrategy(), aclCache());

    aclService.setSidIdentityQuery("SELECT currval('acl_sid_id_seq')");

    aclService.setClassIdentityQuery("SELECT currval('acl_class_id_seq')");

    return aclService;

}


查看完整回答
反對 回復 2022-07-06
  • 2 回答
  • 0 關注
  • 108 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號