如何動態生成「攔截url」。我的用戶名和角色存儲在數據庫中, 我想將所有這些用戶映射到spring安全性。是否有任何方法可以執行此操作?春季安全動態添加用戶和權限
0
A
回答
-1
0
您必須提供自己的實現com.icod.solapCore.spring.security.FilterInvocationSecurityMetadataSource的。
這可能是這樣的:
public class MyFilterInvocationSecurityMetadataSource implements FilterInvocationSecurityMetadataSource {
@Override
public Collection<ConfigAttribute> getAttributes(Object object) throws IllegalArgumentException {
FilterInvocation filterInvocation = (FilterInvocation) object;
HttpServletRequest request = filterInvocation.getHttpRequest();
Collection<ConfigAttribute> result = new ArrayList<ConfigAttribute>();
// Find roles in database that secures the specified request
// ...
// For any role found, create a SecurityConfig object prefixed with "ROLE_" ex :
// for(String role : roles) {
// ConfigAttribute attribute = new SecurityConfig("ROLE_"+roleFound);
// result.add(attribute);
// }
return result;
}
@Override
public Collection<ConfigAttribute> getAllConfigAttributes() {
return null;
}
@Override
public boolean supports(Class<?> clazz) {
return FilterInvocation.class.isAssignableFrom(clazz);
}
}
然後你必須用自己的替換默認FilterInvocationSecurityMetadataSource。我用一個BeanPostProcessor來做,在Spring讀取配置文件之後調用,但在它使配置正式之前調用。看起來是這樣的:
public class MyFilterInvocationSecurityMetadataSourceBeanPostProcessor implements BeanPostProcessor {
private FilterInvocationSecurityMetadataSource metadataSource = new MyFilterInvocationSecurityMetadataSource();
@Override
public Object postProcessBeforeInitialization(Object bean, String name) throws BeansException {
if (bean instanceof FilterInvocationSecurityMetadataSource) {
return metadataSource;
}
return bean;
}
@Override
public Object postProcessAfterInitialization(Object bean, String name) throws BeansException {
return bean;
}
}
然後你只需要配置bean後置處理器:
<bean id="solapcoreFilterInvocationSecurityMetadataSourceBeanPostProcessor" class="foo.bar.MyFilterInvocationSecurityMetadataSourceBeanPostProcessor"/>
希望這有助於。
相關問題
- 1. 春季安全acl管理權限
- 2. 春季啓動oauth2.0和春季安全:如何授予(權限),以通過Facebook或鬆懈用戶登錄
- 3. 春季安全春季啓動4.x
- 4. 春季啓動安全OAuth2 +自定義權限評估
- 5. 春季安全中的角色和權限3
- 6. 春季社交Facebook +春季安全權限電子郵件和用戶名範圍
- 7. 春季安全:動態角色
- 8. 春季安全
- 9. 春季安全
- 10. 春季安全加密MD5
- 11. 春季安全啓動404
- 12. 春季啓動LDAP安全
- 13. 春季安全和Tomcat
- 14. 春季安全和遠程
- 15. 春季安全和@PostFilter
- 16. 春季安全Oauth2和春季啓動問題
- 17. 春季安全到用戶JPA連接
- 18. 春季安全用戶請求登錄
- 19. 春季安全用戶詳細信息
- 20. 春季安全檢查用戶有RoleGroup
- 21. 多個用戶的春季websocket安全
- 22. 春季安全當前用戶線程
- 23. 強制用戶在春季安全
- 24. 春季安全:JDBC用戶查詢,PreparedStatementCallback
- 25. 春季自定義用戶組的安全授權
- 26. 如何檢查用戶是否有權利在春季安全?
- 27. 春季安全jdbc配置授權用戶與多個角色
- 28. 春季安全 - grails限制在角色
- 29. 基於春季安全權限的api訪問
- 30. 春季安全只限於授權。外部認證
你能更具體地說明你的目標是什麼嗎?你想保護用戶特定的URL(例如'/ my-app/user/{userName}/**')? –
是的,我想保護URL。但是,哪個用戶有權訪問我想要存儲在數據庫中的數據的頁面。 – vijay
Spring的'WebExpressionVoter'可能會讓你感興趣。 –