WEB开发网
开发学院软件开发Java 精通 Grails: 身份验证和授权 阅读

精通 Grails: 身份验证和授权

 2009-10-26 00:00:00 来源:WEB开发网   
核心提示:在本文中,我将继续构建一个“微型博客” Blogito,精通 Grails: 身份验证和授权,我删除了此前文章(“用定制 URI 和 codec 优化 Grails 中的 URI”)中的 User,因为 name 字段是 URI 的重要组成部分,授权将回答关于 &ldqu

在本文中,我将继续构建一个“微型博客” Blogito。我删除了此前文章(“用定制 URI 和 codec 优化 Grails 中的 URI”)中的 User,因为 name 字段是 URI 的重要组成部分。这一次我们将实现完整的 User 子系统。您将理解到如何根据 User 是否登录启用登录、限制用户行为,甚至根据 User 的角色添加一些授权。

首先,User 需要一种登录方式,从而能够发布新的条目。

身份验证

对于支持多个用户的博客服务器来说,进行身份验证是个好主意。您肯定不希望 John Doe 以 Jane Smith 的身份发布博客条目,不管是有意还是无意。设置身份验证基础设施将回答这个问题:“您是谁?”,稍后,您还将添加一些授权机制。授权将回答关于 “允许您做什么” 的问题。

清单 1 展示了您在 在上一篇文章 中创建的 grails-app/domain/User.groovy 文件:


清单 1. User 类

class User { 
 static constraints = { 
  login(unique:true) 
  password(password:true) 
  name() 
 } 
  
 static hasMany = [entries:Entry] 
  
 String login 
 String password 
 String name 
  
 String toString(){ 
  name 
 } 
} 

login 和 password 字段已经就绪。您现在只需要提供一个控制器和一个表单。创建 grails-app/controllers/UserController.groovy 并添加如清单 2 所示的代码:


清单 2. 将 login、authenticate 和 logout 闭包添加到 UserController

class UserController { 
 def scaffold = User 
  
 def login = {} 
  
 def authenticate = { 
  def user = User.findByLoginAndPassword(params.login, params.password) 
  if(user){ 
   session.user = user 
   flash.message = "Hello ${user.name}!" 
   redirect(controller:"entry", action:"list")    
  }else{ 
   flash.message = "Sorry, ${params.login}. Please try again." 
   redirect(action:"login") 
  } 
 } 
  
 def logout = { 
  flash.message = "Goodbye ${session.user.name}" 
  session.user = null 
  redirect(controller:"entry", action:"list")    
 }  
} 

1 2 3 4 5 6  下一页

Tags:精通 Grails 身份

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接