我有一个应用程序,我想创建两个不同的工作流,以使用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"