Grails:Spring Security Core如何登录用户两个不同的屏幕和故障屏幕



我有一个应用程序,我想创建两个不同的工作流,以使用Spring-Security核心将用户记录到应用程序中。一个用于客户,另一个用于管理员。因此,总结一下将有2个不同的登录屏幕。我该如何实现?(auth/customer_login包括在失败上重定向的位置,auth/admin_login,包括重定向登录失败的位置(

事先感谢您的任何指导。

好吧,如果您使用的是spring-security-core插件,则不必为不同类型的访问类型(admin& customer(创建不同的登录屏幕。您可以/应该始终使用基于角色的权限将用法分开。例如:ROLE_CUSTOMER看不到或无法访问专为管理员设计的页面/功能。

当然,有注释@Secured,可以实现各种Taglibs。

但是,即使您想提供单独的登录屏幕,也可以创建两个不同的视图(或两个操作(,并在登录失败时使用会话重定向。

我为您提供一个简单的轮廓:

class LoginController {
    // Action for admin login "/login/admin"
    def admin() {
        session.loginType = "ADMIN"
        // render the login view from spring-security-core
    }
    def adminFailure() {
        // do what you want after admin login failed
    }
    // Action for customer login "/login/customer"
    def customer() {
        session.loginType = "CUSTOMER"
        // render the login view from spring-security-core
    }
    def customerFailure() {
        // do what you want after customer login failed
    }
    // Acton when spring-security will redirect after any kind of failure
    def loginFailed() {
        if (session.loginType == "ADMIN") {
            redirect action: "adminFailure"
        } else if (session.loginType == "CUSTOMER") {
            redirect action: "customerFailure"
        }
    }
}

并在您的application.groovy中设置以下内容:

(检查Grails&插件版本(

grails.plugin.springsecurity.failureHandler.defaultFailureUrl = "/login/authFailed"

相关内容

  • 没有找到相关文章

最新更新