微软邮箱登录并使用token记住登录状态的逻辑

一,与微软的交互
  • 点击登录按钮

  • 客户端向微软服务器发请求,地址为:
    https://login.microsoftonline.com/common/oauth2/authorize?client_id=xxx+&response_type=code&prompt=select_account"
    其中client_id是在微软的网站上注册获取的一个字符串。

  • 然后由微软携带code和status两个参数重定向到项目的路由,这个路由是微软的网站上注册时自己设定的(login_ing)。

  • 后端获取到这两个参数后,携带code再此向微软发post请求获取access_token和简单的个人信息

    url = 'https://login.microsoftonline.com/common/oauth2/token'
    header = {
        'Content-Type': 'application/x-www-form-urlencoded',
    }
    data = {
            'code':codes,
            'client_id':'xxx',
            'client_secret':'xxx',
            'resource' :'https://graph.microsoft.com',
            'grant_type': 'authorization_code',
            'redirect_uri':'http://localhost:5000/admin/login_ing'
            }
    a = requests.post(url, data=data, headers=header) # 微软的返回信息
  • 然后再携带access_token向微软发get请求获取用户的详细信息
    access_token = a_dict['access_token']
    p_url = 'https://graph.microsoft.com/v1.0/me'
    date_2 = {
        'Authorization': 'Bearer ' + str(access_token)
    }
    b = requests.get(p_url, headers=date_2) # 微软的返回信息
二,与数据库的交互

拿到用户的邮箱后查询数据库user表是否存在用户。若存在,则生成一串token 字符串,存到浏览器。查询ID是否在管理员表中,不存在则新增一条管理员数据。

三,前后端交互
  • 将生成的token存在session中
  • 每次请求接口之前先查询session用户是否存在,若不存在则重定向到登录页面。
  • 若用户存在,则检验token是否正确,若不正确则重定向到登录页面。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容