快速业务通道

精通Grails: 身份验证和授权 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
{    def entryInstance = Entry.get( params.id )    //limit editing to the original author    if( !(session.user.login == entryInstance.author.login) ){     flash.message = "Sorry, you can only edit your own entries."     redirect(action:list)    }    if(!entryInstance) {      flash.message = "Entry not found with id ${params.id}"      redirect(action:list)    }    else {      return [ entryInstance : entryInstance ]    } }

您可以(也应该)使用相同的四行代码锁定 delete 和 update 闭包。如果来回复制和粘帖相似代码 的工作非常繁琐(并且应当会如此),那么可以创建一个单一的私有方法并在所有三个闭包中调用它。如 果发现在许多控制器内使用的是相同的 beforeInterceptor 和私有方法,那么可以将常见的行为解析为 单个主控制器,并使用其他控制器扩展它,就像在任何 Java 类中所做的那样。

可以向授权基础设施添加另外一项内容以使它变得更加健壮:角色

精通Grails: 身份验证和授权(6)

时间:2011-08-02 IBM Scott Davis

添加角色

为 User 分配角色是一种方便的分组方法。随后可以向组分配权限,而不是向个人分配权限。例如, 现在任何人都可以创建一个新的 User。仅仅检查某个用户是否登录还远远不够。我希望限制管理员管理 User 帐户的权限。

清单 9 向 User 添加了一个角色字段以及一条限制,限制 author 或 admin 的值:

清单 9. 向 User 添加一个角色字段

class User {   static constraints = {    login(unique:true)    password(password:true)    name()    role(inList:["author", "admin"])   }   static hasMany = [entries:Entry]   String login   String password   String name   String role = "author"   String toString(){    name   } }

注意,role 默认值为 author。inList 限制给出了一个复选框,只显示了两个有效选项。图 4 展示 了它的实际使用:

图 4. 将新用户角色限制为 author 或 admin

精通Grails: 身份验证和授权(7)

时间:2011-08-02 IBM Scott Davis

在 grails-app/conf/BootStrap.groovy 中创建一个 admin User,如清单 10 所示。不要忘记将 author role 添加到两个现有的 User 中。

清单 10. 添加一个 admin User

import grails.util.GrailsUtil class BootStrap {   def init = { servletContext ->    switch(GrailsUtil.environment){     case "development":      def admin = new User(login:"admin",                 password:"password",                 name:"Administrator",                 role:"admin")      admin.save()      def jdoe = new User(login:"jdoe",                password:"password",                name:"John Doe",                role:"author")      //snip...      def jsmith = new User(login:"jsmith",                password:"wordpass",                name:"Jane Smith",                role:"author")      //snip...     break     case 

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号