diff --git a/zh/14.4.md b/zh/14.4.md index 79cbb1bf..efa43c16 100644 --- a/zh/14.4.md +++ b/zh/14.4.md @@ -9,10 +9,12 @@ beego目前没有针对这三种方式进行任何形式的集成,但是可以 ## HTTP Basic和 HTTP Digest认证 这两个认证是一些应用采用的比较简单的认证,目前已经有开源的第三方库支持这两个认证: - - github.com/abbot/go-http-auth +```Go + github.com/abbot/go-http-auth +``` 下面代码演示了如何把这个库引入beego中从而实现认证: +```Go package controllers @@ -45,22 +47,25 @@ beego目前没有针对这三种方式进行任何形式的集成,但是可以 this.Data["Email"] = "astaxie@gmail.com" this.TplNames = "index.tpl" } - +``` 上面代码利用了beego的prepare函数,在执行正常逻辑之前调用了认证函数,这样就非常简单的实现了http auth,digest的认证也是同样的原理。 ## oauth和oauth2的认证 oauth和oauth2是目前比较流行的两种认证方式,还好第三方有一个库实现了这个认证,但是是国外实现的,并没有QQ、微博之类的国内应用认证集成: +```Go github.com/bradrydzewski/go.auth - +``` 下面代码演示了如何把该库引入beego中从而实现oauth的认证,这里以github为例演示: 1. 添加两条路由 +```Go beego.RegisterController("/auth/login", &controllers.GithubController{}) beego.RegisterController("/mainpage", &controllers.PageController{}) - +``` 2. 然后我们处理GithubController登陆的页面: +```Go package controllers @@ -89,8 +94,9 @@ oauth和oauth2是目前比较流行的两种认证方式,还好第三方有一 githubHandler.ServeHTTP(this.Ctx.ResponseWriter, this.Ctx.Request) } - +``` 3. 处理登陆成功之后的页面 +```Go package controllers @@ -126,7 +132,7 @@ oauth和oauth2是目前比较流行的两种认证方式,还好第三方有一 this.Data["name"] = user.Name() this.TplNames = "home.tpl" } - +``` 整个的流程如下,首先打开浏览器输入地址: ![](images/14.4.github.png?raw=true) @@ -147,7 +153,7 @@ oauth和oauth2是目前比较流行的两种认证方式,还好第三方有一 ## 自定义认证 自定义的认证一般都是和session结合验证的,如下代码来源于一个基于beego的开源博客: - +```Go //登陆处理 func (this *LoginController) Post() { @@ -239,8 +245,9 @@ oauth和oauth2是目前比较流行的两种认证方式,还好第三方有一 } return true } - +``` 有了用户登陆和注册之后,其他模块的地方可以增加如下这样的用户是否登陆的判断: +```Go func (this *AddBlogController) Prepare() { sess := globalSessions.SessionStart(this.Ctx.ResponseWriter, this.Ctx.Request) @@ -252,7 +259,7 @@ oauth和oauth2是目前比较流行的两种认证方式,还好第三方有一 } this.Data["Username"] = sess_username } - +``` ## links * [目录]() * 上一节: [表单及验证支持](<14.3.md>)