我有一个应用程序,其中登录应包含组织编号,因此登录需要用户名+密码+组织编号。
示例案例:如果用户名+密码与现有用户匹配,我需要检查该用户是否具有组织ID。如果没有,登录失败。
我看到spring security plugin的登录表单提交到/app/j_spring_security_check
,但找不到实际实现的位置。
此外,我不确定是否触摸这是实现此自定义登录的正确方法。
我的问题是在哪里/如何自定义登录操作? (使我在上述情况下失败)。
答案 0 :(得分:1)
我们可以通过覆盖过滤器UserNamePasswordAuthenticationFilter并提供我们的自定义尝试身份验证来完成此操作。 所以,转到DefaultSecurityConfig.groovy文件(插件内部)。见下面的树形图:
map.setContextMenu({
control: 'map',
options: [{
title: 'Add marker',
name: 'add_marker',
action: function(e){
this.addMarker({
lat: e.latLng.lat(),
lng: e.latLng.lng(),
animation: google.maps.Animation.DROP,
draggable:true,
title: 'New Marker'
});
this.hideContextMenu();
}
}, {
title: 'Center here',
name: 'center_here',
action: function(e){
this.setCenter(e.latLng.lat(), e.latLng.lng());
}
}]
});
map.setContextMenu({
control: 'marker',
options: [{
title: 'Center here',
name: 'center_here',
action: function(e){
this.setCenter(e.latLng.lat(), e.latLng.lng());
}
}]
});
在apf闭包下的DefaultSecurityConfig.groovy中,我们指定了filterProcessUrl,我们可以在grails应用程序中重写Config.groovy,就像我们对其他属性一样(例如rejectIfNoRule)
target
|-work
|-plugins
|-spring-security-core-2.0-RC5
|-conf
|-DefaultSecurityConfig.groovy
现在我们了解了它如何检查身份验证。让我们通过覆盖名为 UsernamePasswordAuthenticationFilter 的过滤器的 attemptAuthentication 方法来自定义它。例如,请参阅下文(同样,请查看在那里添加的内联注释)
grails.plugin.springsecurity.apf.filterProcessesUrl="your url"
因此,就春季安全而言,它更像是一项压倒一切的任务。
为java提供更清晰的相同读取this nice link的想法 和 为grails阅读this
希望它有所帮助。
这些博客提供了相同要求的更详细概念。