精通 Grails: 身份验证和授权
创建一个身份验证 TagLib
像 Google 和 Amazon 这样的 Web 站点在标题处提供了一个不太显眼的文本链接,允许您登录和退出。您只需要几行代码就可以在 Grails 中实现这一点。
首先,在命令提示下输入 grails create-tag-lib Login。将清单 4 中的代码添加到新创建的 grails-app/taglib/LoginTagLib.groovy 中:
清单 4. LoginTagLib.groovy
class LoginTagLib {
def loginControl = {
if(session.user){
out << "Hello ${session.user.name} "
out << """[${link(action:"logout", controller:"user"){"Logout"}}]"""
} else {
out << """[${link(action:"login", controller:"user"){"Login"}}]"""
}
}
}
def loginControl = {
if(session.user){
out << "Hello ${session.user.name} "
out << """[${link(action:"logout", controller:"user"){"Logout"}}]"""
} else {
out << """[${link(action:"login", controller:"user"){"Login"}}]"""
}
}
}
现在,将新的
清单 5. 将
<div id="header">
<p><g:link class="header-main" controller="entry">Blogito</g:link></p>
<p class="header-sub">A tiny little blog</p>
<div id="loginHeader">
<g:loginControl />
</div>
</div>
<p><g:link class="header-main" controller="entry">Blogito</g:link></p>
<p class="header-sub">A tiny little blog</p>
<div id="loginHeader">
<g:loginControl />
</div>
</div>
最后,将针对 loginHeader的一些 CSS 格式添加到 web-app/css/main.css,如清单 6 所示:
清单 6. loginHeader的 CSS 格式
#loginHeader {
float: right;
color: #fff;
}
float: right;
color: #fff;
}
重启 Grails 并以 jsmith 身份登录后,屏幕应该如图 3 所示:
图 3. 实际使用 Login TagLib

0
相关文章