Add 14.4.md syntax highlighting
This commit is contained in:
27
zh/14.4.md
27
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"
|
||||
}
|
||||
|
||||
```
|
||||
整个的流程如下,首先打开浏览器输入地址:
|
||||
|
||||

|
||||
@@ -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
|
||||
* [目录](<preface.md>)
|
||||
* 上一节: [表单及验证支持](<14.3.md>)
|
||||
|
||||
Reference in New Issue
Block a user