123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- 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
- }
|