精通Grails: 身份验证和授权

在本文中,我将继续构建一个“微型博客” 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")
  }
}

时间: 2024-10-02 02:46:43

精通Grails: 身份验证和授权的相关文章

Tivoli Access Manager与ObjectGrid集成以对分布式客户机进行身份验证和授权

引言 IBM WebSphere Extended Deployment V6.1 的 ObjectGrid 组件是用于 Java 对象的启用了网格的内存内数据存储区,专门针对可伸缩性.弹性和高性能进行了精心设计.ObjectGrid 可以像使用内存内数据库一样使用,也可以使用其将数据分布在网络上. ObjectGrid 为 Java 身份验证和授权服务(Java Authentication and Authorization Service,JAAS)提供即时可用的安全性支持.不过,由于 J

谈谈Asp.net身份验证、授权

1.Asp.net是依存于IIS的一个服务,说到Asp.net的安全相关的话题当然要有一个整体上的思路:IIS接收->IIS验证->IIS授权--->ASP.net验证--->Asp.net授权--->资源返回给用户 IIS从网络上接收到一个HTTP WEB请求可以使用SSL技术来保证服务器的身份,此外SSL也可以提供一个安全通道来保护客户端和服务器端的机密数据的传送.IIS使用基本 摘要式 或者其它的方式验证用户,如果网站中的大部分内容不需要验证就可以设定为匿名验证.验证之

asp.net里面的身份验证和授权

今天闲着无聊.想起来了ASP.NET身份验证.感觉良好.贴出下列代码:login.aspx HTML代码 <%@ Page language="c#" Codebehind="02Login.aspx.cs" AutoEventWireup="false" Inherits="身份验证._02Login" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 T

asp.net身份验证和授权

asp.net 今天闲着无聊.想起来了ASP.NET身份验证.感觉良好.贴出下列代码:login.aspx HTML代码   1<%@ Page language="c#" Codebehind="02Login.aspx.cs" AutoEventWireup="false" Inherits="身份验证._02Login" %> 2<!DOCTYPE HTML PUBLIC "-//W3C//D

精通Grails系列

精通Grails: 构建您的第一个Grails应用程序 精通Grails: 身份验证和授权 精通Grails: 使用Ajax实现多对多关系 精通Grails: 文件上传和Atom联合 精通Grails: 用Groovy服务器页面(GSP)改变视图 精通Grails: 用JSON和Ajax实现异步Grails 精通Grails: 用定制URI和codec优化Grails中的URI 精通Grails: 改变Grails应用程序的外观 精通Grails: 在企业中使用Grails 精通Grails:

精通Grails: 文件上传和Atom联合

在过去几期的 精通 Grails 文章中,您一直在逐步构建一个小型的博客服务(Blogito).在这篇文 章中,Blogito 将最终完工,成为一个实用的博客应用程序.您将为博客条目主体实现文件上传功能,并 添加自己制作的用于聚合的 Atom feed. 但是,在开始之前,请注意在上一篇文章("身份验证和授权")中,我加入的认证使 UI 中出现一 个细小的 bug.在加入新的特性之前,应该修复这个 bug. 修复隐藏的 bug 启动 Grails 时,grails-app/conf/B

使用DataPower和HTML基于表单的登录实现轻松的前端身份验证

这个由多期文章组成的新的专栏的第一期文章将会详细探讨此功能,提供 HTML 基于 表单的登录如何部署在 DataPower 中来保护您的 Web 应用程序的实用示例.征服复杂性专栏的每一期文章都会解决一个与安全性相关的常见问题,该问题可使用 IBM WebSphere DataPower Appliances 和其他 IBM 技术解决或简化. 简介 HTML 基于表单的登录身份验证经常可在互联网上看到.一个网站显示一个 HTML 表单,供浏览器用户提供凭据(比如用户名和密码),然后这些凭据可用于

[收藏]使用Reporting Services中的窗体身份验证

services 使用 Reporting Services 中的窗体身份验证发布日期: 8/18/2004 | 更新日期: 8/18/2004Microsoft Corporation 适用范围:Microsoft SQL Server 2000 Reporting Services 摘要:了解有关 Reporting Services 安全扩展方面的知识,着重学习窗体身份验证.此外,下载和部署 Reporting Services 的窗体身份验证扩展示例. 要安装示例代码,请下载 Forms

ASP .NET 中的身份验证:.NET 安全性指导

安全|安全性 摘要本文讨论了设计服务器应用程序时考虑安全性的重要性.Internet Information Services 和 ASP .NET 均提供了安全模型,以便您对用户进行适当的身份验证,并在应用程序中获得正确的安全环境. -------------------------------------------------------------------------------- 目录简介安全性考虑IIS 和 ASP .NET 之间的关系身份验证方法Web 服务的安全性代码访问安全