package outServer import ( "fmt" "github.com/gogf/gf/v2/net/ghttp" "golang.org/x/net/publicsuffix" "net/http" "net/http/cookiejar" "net/url" ) type sussBi struct { addr string user string pwd string Url *url.URL jar *cookiejar.Jar } func InitSussBi(address, user, password string) *sussBi { sussCookie, _ := cookiejar.New(&cookiejar.Options{ PublicSuffixList: publicsuffix.List, }) u, _ := url.Parse(address) return &sussBi{ addr: address, user: user, Url: u, pwd: password, jar: sussCookie, } } // AutoLogin 自动登录 func (s *sussBi) AutoLogin() error { client := &http.Client{ Jar: s.jar, } resp, err := client.Get(fmt.Sprintf("%s/?:user=%s&:password=%s", s.addr, s.user, s.pwd)) if err != nil { return err } if !(resp.StatusCode == 302 || resp.StatusCode == 200) { return fmt.Errorf("自动登录异常") } return nil } // RequestLogin 装配登录状态 func (s *sussBi) RequestLogin(r *ghttp.Request) error { if cookies := s.jar.Cookies(s.Url); len(cookies) > 0 { r.Request.AddCookie(cookies[0]) } return nil } // CheckLoginOut 检测登录状态是否过期 func (s *sussBi) CheckLoginOut(r *ghttp.Request) bool { if r.Response.Status == 401 { return true } return false }