所以我想做的是,如果输入用户名"admin"并输入密码"pass",则登录页面定向到管理页面(例如:"admin.gsp")。 或者,如果输入了用户名"user"和密码"pass",则将其定向到用户页面
但是我不明白控制器究竟是如何工作的。
因此,当您将页面重定向到特定的控制器和特定方法时,如何使其重定向到特定页面。你在该方法中实现了什么代码?
为了更好地解释我的问题。下面我们有控制器用户的代码,带有 if else 语句,具体取决于用户在登录框中键入的内容。
package file_download
class UserController {
def index() {
//code that directs the page to username page, let's call it or user.gsp
}
def login = {
if(params.username == "admin" && params.password == "pass")
{
session.user = "admin"
redirect(controller:"admin",action:"admin")
}
else if(params.username == "user" && params.password == "pass")
{
session.user="user"
redirect(controller:"user",action:"index")
}
else
{
flash.message = "login failed"
}
redirect(controller:"user",action:"login")
}
def logout = {
session.user = null
redirect(action: 'index')
}
}
现在在这里,我们有带有操作索引的管理控制器,它应该实现一个代码来将页面定向到...admin.gsp,或admin.html,无论管理页面被称为
package file_download
class AdminController {
def index() {
//code that takes us to admin page let's call it admin.gsp
}
}
我们究竟该怎么做?我需要对控制器进行一些解释。
谢谢。请询问您是否需要对此问题进行更多澄清,因为我将对其进行编辑。
我认为你有错误的假设。在Grails(我不知道rails)中,当你进入登录页面时,假设
/app/user/login
然后,首先调用控制器方法(def login()
),所以你的逻辑不应该去那里,它实际上应该什么都不做,按照惯例,它最终会渲染login.gsp
。接下来,您的用户填写他的用户名/通行证并提交表单,第二个请求让我们说
/app/user/auhtenticate
这是您的逻辑应该去的地方,重定向将按您的预期工作
所以基本上 - 首先调用控制器方法,并且(除非您指定要渲染的 gsp 或执行重定向)在执行该方法后,将呈现 gsp 视图
我对rails一无所知,但是在grails中,您要查找的是render
。
渲染:(http://grails.github.io/grails-doc/latest/ref/Controllers/render.html )
所以代码看起来像这样
def index() {
render view: "/directory/inside/views/admin" model: [thing1: "Thing One"]
}