技术开发 频道

精通 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"}}]"""      
    }
  }
}

  现在,将新的 标记添加到 grails-app/views/layouts/_header.gsp,如清单 5 所示:

 

  清单 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>

  最后,将针对 loginHeader的一些 CSS 格式添加到 web-app/css/main.css,如清单 6 所示:

 

  清单 6. loginHeader的 CSS 格式

 

 

#loginHeader {
  float:
right;
  color: #fff;
}

  重启 Grails 并以 jsmith 身份登录后,屏幕应该如图 3 所示:

 

  图 3. 实际使用 Login TagLib  

 

0
相关文章