LoginBase
控制会话、管理登录态,所有登录插件都应该继承自LoginBase
api说明
sunday.utils.LoginBase
(file='/Users/rnet/.sunday/cache', logger=LoginBase为登录插件开发必须的原始类,供登录插件继承
Usages:
from sunday.utils.LoginBase import LoginBase
class MyLogin(LoginBase):
def init(self, useLoginState=True, ident=None):
self.logger = Logger('MyLogin').getLogger()
LoginBase.init(self, logger=self.logger, ident=ident or '', error=[99999, '网站接口异常,请稍后重试'])
checkUrl = 'http://host:port/getCurrentUser'
self.rs, self.isLogin = self.initRs(checkUrl, useLoginState)
Args:
logger(Logger): 子类调用传入,可以保持日志打印一致
pacWifi(str): wifi名称,如果当前网络连入的wifi相同则使用pac代理
pacUrl(str): url地址,尝试请求该url,如果能请求到则使用pac代理,一般为内网链接
ident(str): 多用户标识,用于多用户认证
error(list): 数组元素为两个时生效,与sunday.core.fetch.Fetch.setJsonError
入参值一致
checkLogin
(self, checkUrl=None)程序默认的登录成功判断方法, 即: 请求首页, 如果跳到登录页则说明登录态失效 这种判断方式根据目标网站处理逻辑不同可能会不准确,一般子类会重构这个方法 Args: checkUrl(str): 用于检查是否登录成功的网站链接
initRs
(self, checkUrl=None, useHistory=True)初始化会话 Args: checkUrl(str): 用于检查是否登录成功的网站链接 useHistory(bool): 标记是否使用上一次的登录态,为False则为重新登录不用历史登录态
使用注意
- 存在多登录态管理时需要传入唯一标识,即
ident
入参值会在生成登录关键信息文件时作为文件名尾缀,以标记下次相同ident值直接取出登录态使用; - initrs方法入参usehistory表示是否使用已经存在的登录态,一般建议开启,除非是登录接口需要验证登录的账密信息则需要重走登录流程;
- initrs方法会返回session实例与是否登录的标识,当登录标识为未登录时需要重新执行登录流程.