当前位置: 首页>>代码示例>>Golang>>正文


Golang Router.Before方法代码示例

本文整理汇总了Golang中github.com/speedland/wcg.Router.Before方法的典型用法代码示例。如果您正苦于以下问题:Golang Router.Before方法的具体用法?Golang Router.Before怎么用?Golang Router.Before使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在github.com/speedland/wcg.Router的用法示例。


在下文中一共展示了Router.Before方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。

示例1: registerResponseHelperHandlers

func registerResponseHelperHandlers(routes *wcg.Router) {
	routes.Before(func(res *wcg.Response, req *wcg.Request) {
		var app *App
		tmp := strings.Split(req.URL().Path, "/")
		req.Logger.Info("App is :%s", tmp[1])
		switch tmp[1] {
		case "api", "cron":
			app = apps[tmp[2]]
			break
		default:
			app = apps[tmp[1]]
		}
		if app == nil {
			req.Logger.Debug("No app is identified.")
			return
		}
		// request locals
		req.SetLocal(LOCAL_APP_KEY, app)
		res.SetLocal(LOCAL_APP_KEY, app)
		// response locals
		uk := GetUserKind(req)
		navs := make([]*Page, 0)
		for _, nav := range app.navigations {
			req.Logger.Debug("Checking %s nav availablity: (%d, %d)", nav.Title, uk, nav.authority)
			if uk >= nav.authority {
				navs = append(navs, nav)
			}
		}
		res.SetLocal(LOCAL_NAVIGATIONS_KEY, navs)
	})
}
开发者ID:speedland,项目名称:apps,代码行数:31,代码来源:response_helper.go

示例2: registerAuthHandlers

func registerAuthHandlers(routes *wcg.Router) {
	middleware.SessionConfigIni.StoreFactory = gae.GAESessionStoreFactory
	sessionBefore, sessionAfter := middleware.SessionSupport()
	fbconfig := facebookConfig()
	fbauth, fbcallback, fbvalidates, fblogout := middleware.OAuth2(fbconfig)
	csrf := middleware.CSRFSupport()

	// resolve the access user
	routes.Before(func(res *wcg.Response, req *wcg.Request) {
		if apiTokenAuthHandler(res, req) {
			req.Logger.Debug("Api Token Auth: Yes")
			req.SetLocal(LOCAL_KEY_AUTH_TYPE, AUTH_TYPE_API_TOKEN)
			return
		}
		req.Logger.Debug("Api Token Auth: No")
		if cronAuthHandler(res, req) {
			req.Logger.Debug("Cron Auth: Yes")
			req.SetLocal(LOCAL_KEY_AUTH_TYPE, AUTH_TYPE_CRON)
			return
		}
		req.Logger.Debug("Cron Auth: No")

		if ahAuthHandler(res, req) {
			req.Logger.Debug("Ah Auth: Yes")
			req.SetLocal(LOCAL_KEY_AUTH_TYPE, AUTH_TYPE_AH)
			return
		}
		req.Logger.Debug("Ah Auth: No")
		req.Logger.Debug("Session Auth: Yes")

		sessionBefore(res, req)
		res.SetLocal(LOCAL_KEY_AUTH_TYPE, AUTH_TYPE_COOKIE)
		fbvalidates(res, req)

		res.SetLocal("fb_app_id", fbconfig.ClientId)
		res.SetLocal("wcg_user", util.FormatJson(map[string]interface{}{
			"id":           req.User.Id(),
			"display_name": req.User.DisplayName(),
			"image_link":   req.User.ImageLink(),
			"profile_link": req.User.ProfileLink(),
			"last_login":   req.User.LastLogin(),
			"user_kind":    GetUserKind(req),
		}))

		if req.Method() != "GET" && req.Method() != "HEAD" {
			csrf(res, req)
		}
	})

	// AUthorization Endpoint
	routes.Get("/login/facebook", func(res *wcg.Response, req *wcg.Request) {
		if req.Query("ref") != "" {
			req.Session.Set(SESSION_KEY_LOGIN_REF, req.Query("ref"))
		}
		fbauth(res, req)
	})
	routes.Get("/login/facebook/callback", fbcallback)
	routes.Post("/logout/facebook", func(res *wcg.Response, req *wcg.Request) {
		fblogout(res, req)
		res.Redirect("/", http.StatusFound)
	})

	// Save the session data
	routes.After(func(res *wcg.Response, req *wcg.Request) {
		if auth_type, ok := res.Local(LOCAL_KEY_AUTH_TYPE).(string); ok && auth_type == AUTH_TYPE_COOKIE {
			sessionAfter(res, req)
		}
	})
}
开发者ID:speedland,项目名称:apps,代码行数:69,代码来源:auth.go


注:本文中的github.com/speedland/wcg.Router.Before方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。