尽管现在认证没有默认机制,实际上有上千种方法可以执行认证。
然而,用 interceptors或 filters 实施一个简单的认证机制是没意义的。
过滤器运行你对所有的控制器或URI空间应用认证。
比如你可以在grailsapp/conf/SecurityFilters.groovy类中创建一组新过滤器如下:class SecurityFilters {
def filters = {
loginCheck(controller:'*', action:'*') {
before = {
if(!session.user && actionName != "login") {
redirect(controller:"user",action:"login")
return false
}
}
}
}
}在请求处理执行之前,上述类中的loginCheck过滤器将拦截该执行动作。
假如session里没有一个用户而且请求被执行,该login请求处理不是自己转向到自己。
Login请求处理也是很小的:def login = {
if(request.get) render(view:"login")
else {
def u = User.findByLogin(params.login)
if(u) {
if(u.password == params.password) {
session.user = u
redirect(action:"home")
}
else {
render(view:"login", model:[message:"Password incorrect"])
}
}
else {
render(view:"login", model:[message:"User not found"])
}
}
}