在Grails Spring Security插件

时间:2015-09-17 01:45:58

标签: authentication grails spring-security

我有一个应用程序,其中登录应包含组织编号,因此登录需要用户名+密码+组织编号

示例案例:如果用户名+密码与现有用户匹配,我需要检查该用户是否具有组织ID。如果没有,登录失败。

我看到spring security plugin的登录表单提交到/app/j_spring_security_check,但找不到实际实现的位置。

此外,我不确定是否触摸这是实现此自定义登录的正确方法。

我的问题是在哪里/如何自定义登录操作? (使我在上述情况下失败)。

1 个答案:

答案 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

希望它有所帮助。

这些博客提供了相同要求的更详细概念。