我已经启动并运行了python服务器(更准确地说,是Flask),它正在正确地连接到我的CAS服务器,重定向到CAS登录,并在登录时返回正确的用户数据。这是来自烧瓶服务器的相关代码:
app.secret_key = "SOMESECRETKEY"
cas_client = CASClient(
version=3,
service_url="http://localhost:5000/login?next=%2Fprofile",
server_url='https://django-cas-ng-demo-server.herokuapp.com/cas/'
)
@app.route("/profile")
def profile(method=["GET"]):
if "username" in session:
jawt = jwt.encode(session["user_attributes"], app.secret_key, algorithm="HS256")
return redirect("http://localhost:4200/?accessToken=" + jawt)数据通过GET方法重定向返回到角页(见上面的代码)。我不想通过GET方法发送accessToken,而是希望将它存储在localStorage中。如果不首先将其作为GET参数发送,我如何才能从python中做到这一点呢?
发布于 2021-05-27 22:06:00
理想情况下,无论哪个路由实现登录功能,都会返回令牌,但是如果不可能,您就可以为此创建一个特定的路由,并将其保存在localStorage中:
from flask import jsonify
@app.route("/token")
def token(method=["GET"]):
if "username" not in session:
abort(403)
token = jwt.encode(session["user_attributes"], app.secret_key, algorithm="HS256")
return jsonify(token=token)然后创建另一条返回配置文件详细信息的路径:
import requests
from flask import jsonify, request
@app.route("/profile")
def profile(method=["GET"]):
token = get_token_from_authorization_header(request)
qs = {"accessToken": token}
resp = requests.get("http://localhost:4200", params=qs)
if not resp.ok:
abort(403)
return resp.json()https://stackoverflow.com/questions/67686826
复制相似问题