1 2 3 4 5 6 7 8 | <bean id="aclService" class="org.springframework.security.acls.jdbc.JdbcMutableAclService"> <constructor-arg ref="dataSource" /> <constructor-arg ref="lookupStrategy" /> <constructor-arg ref="aclCache" /> <property name="classIdentityQuery" value="values IDENTITY_VAL_LOCAL()"/> <property name="sidIdentityQuery" value="values IDENTITY_VAL_LOCAL()"/> </bean> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | public void createNewReport(String title, String content) throws ServiceException { final Report report = new Report(); report.setTitle(title); report.setContent(content); transactionTemplate.execute(new TransactionCallback<Object>() { public Object doInTransaction(TransactionStatus status) { reportDao.create(report); addPermission(report.getId(), new PrincipalSid(getUsername()), BasePermission.ADMINISTRATION); return null; } }); } public void grantRead(final String username, final Long reportId) { transactionTemplate.execute(new TransactionCallback<Object>() { public Object doInTransaction(TransactionStatus status) { addPermission(reportId, new PrincipalSid(username), BasePermission.READ); return null; } }); } private void addPermission(Long reportId, Sid recipient, Permission permission) { MutableAcl acl; ObjectIdentity oid = new ObjectIdentityImpl(Report.class, reportId); try { acl = (MutableAcl) mutableAclService.readAclById(oid); } catch (NotFoundException nfe) { acl = mutableAclService.createAcl(oid); } acl.insertAce(acl.getEntries().size(), permission, recipient, true); mutableAclService.updateAcl(acl); } |
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |