# sso **Repository Path**: go-kade/sso ## Basic Information - **Project Name**: sso - **Description**: this is sso - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: https://gitee.com/go-kade/sso - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-10-12 - **Last Updated**: 2024-02-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 之前的ioc map形式,注册name:“interface" 如果掉用其方法,就是实现init,这样才调 ## 现在的ioc 切片,只需要注册 name,version 如果掉用其方法,就是实现init,这样才调,但是这种方式只要name和version,比上面更复杂好用 ### app1 ioc1 是老的版本 map ### app ioc 是新的版本 slice ## 路由注册 ## func main() { req := ioc.NewLoadConfigRequest() req.ConfigFile.Enabled = true req.ConfigFile.Path = "etc/application.toml" ioc.DevelopmentSetup(req) // a := ioc.Default().Get(impl.AppName).(*impl.UserServiceImpl) // req1 := user.NewCreateUserRequest() // req1.UserName = "sja11" // req1.PassWord = "sman11" // req1.Label = map[string]string{"bsa1b": "111111"} // t.Log(a.CreateUser(context.Background(), req1)) // 加载 Gin API,指定路径前缀和路由器对象 r := gin.Default() // // a := r.Group("ccc") // r.POST("/", func(c *gin.Context) { // c.JSON(200, gin.H{"message": "Hello from Gin API"}) // }) r.LoadHTMLGlob("views/*") //配置模版中间件 ioc.LoadGinApi("/api/v1", r) // 启动 Gin 服务器 r.Run(":8080") } ## api路由注册需要满足以下条件 ### api的实现方法要先注册api ioc,在注册路由api func init() { ioc.Api().Registry(&TokenApiHeadler{}) } type TokenApiHeadler struct { //因为这个api 依赖他的具体实现 token token.Service // user *impl.UserServiceImpl //依赖控制器 不应该这样干他的实现,应该user.Service方法才对 } func (u *TokenApiHeadler) Init() error { u.token = ioc.Default().Get(tokenimpl.AppName).(*tokenimpl.TokenServiceImpl) return nil } func (u *TokenApiHeadler) Name() string { return "tokens" } func (u *TokenApiHeadler) Version() string { return "" } func (u *TokenApiHeadler) Priority() int { return 9 } func (u *TokenApiHeadler) Close(ctx context.Context) error { return nil } func (u *TokenApiHeadler) AllowOverwrite() bool { return true } func (t *TokenApiHeadler) Registry(router gin.IRouter) { ///解决cors跨域请求 router.Use(middlewares.CorsMiddleware) router.GET("/login1", func(g *gin.Context) { // 使用 HTML 渲染登录页面 g.HTML(http.StatusOK, "login.html", nil) }) router.POST("/login", t.LoginApi) router.OPTIONS("/login", t.LoginApi) router.GET("/loginout", t.LoginOutApi) // 后台管理接口 需要认证 这个有个规范,必须把需要修改的请求放在下面 router.Use(middlewares.NewTokenAuther().Auth) //假设页面调用 router.GET("/yw", func(g *gin.Context) { // 使用 HTML 渲染登录页面 g.HTML(http.StatusOK, "login.html", nil) })}