Go 语言实战 - revel 框架教程之权限控制
一个站点上面最基本都会有三种用户角色,未登录用户、已登录用户和管理员。这一次我们
就来看看在
revel 框架下如何进行权限控制。
因为
revel 是 MVC 结构的,每一个 url 其实都会映射到一个具体的 Controller.Action 上面,
所以权限控制落到实处就是对
Action 的访问进行控制。
那么思路是如下:
1. 有一个方法能够判定当前是什么角色。
2. 有一地方定义了每一个 Action 的访问权限要求。
3. 有一个方法能够在调用所有 Action 之前被调用,而且能够判定是否还要继续调用 Action。
我们一项一项来解决。
存储当前用户的角色信息
先定义一个角色类型如下。
type Role int
const (
AnonymousRole Role = iota
UserRole
AdminRole
)
定义个常量,用于在 session 里面存放当前用户的角色类型。
const (
CSessionRole = "CSessionRole"
)
然后在处理用户登陆的方法中在
session 里保存角色信息。
func (c *Account) HandleLogin(email, password string) revel.Result {
//在这里处理登陆逻辑
c.Session[CSessionRole] = UserRole
//在这里处理跳转和页面渲染
}