从HTTP授权标头中删除“承载者”的Python方法是什么

时间:2018-09-29 18:08:33

标签: python string python-3.x

我在这样的字符串中有一个Authorization标头:

JSESSIONID

我不想使用空格字符进行标记化,因为我想要求字符串“ Bearer”位于字符串的开头

仅从字符串中返回令牌的pythonic方法是什么?

是否存在像PHP Bearer [myawesometoken] 这样的正则表达式匹配功能?这会是Python的方法吗?

3 个答案:

答案 0 :(得分:1)

假设您的授权字符串为

Bearer mytoken

然后您可以像这样提取令牌

import re
authorization_string="Bearer mytoken"
g = re.match("^Bearer\s+(.*)", authorization_string)

if g:
    # ur token
    print(g.group(1)
else:
    print("No token")

答案 1 :(得分:1)

我认为,最Python化的方法是使用strstartswith的内置string slicing方法:

PREFIX = 'Bearer '

def get_token(header):
    if not header.startswith(PREFIX):
        raise ValueError('Invalid token')
    return header[len(PREFIX):]

但是我个人更喜欢str.partition将标头标记为3元组:

PREFIX = 'Bearer '

def get_token(header):
    bearer, _, token = header.partition(' ')
    if bearer != PREFIX:
        raise ValueError('Invalid token')
    return token

答案 2 :(得分:0)

字符串是否始终采用这种格式?

header_string = 'Bearer [myawesometoken]'
token = header_string[8:-1]