我正在使用 Angular7 在前面和 Flask 在后面制作一个小应用程序,我要做的是订阅一个服务,然后将返回的数据从我的 main 内部保存到一个对象类型变量中AppComponent,然后访问这个变量我的其他组件。
接口服务
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
@Injectable({
providedIn: 'root'
})
export class ApiService {
constructor(private http: HttpClient) { }
CheckApi(){
return this.http.get('http://localhost:5000/')
}
}
Run Code Online (Sandbox Code Playgroud)
应用组件
import { Component, OnInit, Injectable } from '@angular/core';
import { ApiService } from './api.service'
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
title = 'Inbox App';
public text: object
constructor(private data: ApiService){}
ngOnInit(){ …Run Code Online (Sandbox Code Playgroud) 我想用我的应用程序迁移flask_dance,以便用户使用谷歌和其他社交网络进行授权.
我收到此错误:
Cannot get OAuth token without an associated user
在我进行蓝图和sqlalchemy后端之间的连接之前,应用程序工作正常,如果我删除该google_blueprint.backend行错误消失.
这是我的__init__.py:
import os
from flask import Flask, redirect, url_for, current_app
from flask_login import current_user
from develop.models import (
db,
User,
OAuth
)
from flask_dance.contrib.google import make_google_blueprint
from flask_dance.consumer.backend.sqla import SQLAlchemyBackend
from flask_dance.consumer import oauth_authorized
from sqlalchemy.orm.exc import NoResultFound
def create_app(config_object):
app = Flask(__name__)
app.config.from_object(config_object)
db.init_app(app)
login_manager.init_app(app)
google_blueprint = make_google_blueprint(
client_id=app.config['GOOGLE_CLIENT_ID'],
client_secret=app.config['GOOGLE_CLIENT_SECRET'],
scope=["profile", "email"]
)
app.register_blueprint(google_blueprint, url_prefix='/login')
@oauth_authorized.connect_via(google_blueprint)
def google_logged_in(blueprint, token):
resp = blueprint.session.get("/oauth2/v2/userinfo")
if resp.ok: …Run Code Online (Sandbox Code Playgroud) 如何从keycloak服务器获取 access_token 到我的授权组件。授权 URL 如下所示:
回调 url 位于http://localhost:4200/auth,这是组件:
import { Component, OnInit } from '@angular/core';
import {ActivatedRoute} from '@angular/router';
@Component({
selector: 'app-auth',
templateUrl: './auth.component.html',
styleUrls: ['./auth.component.scss']
})
export class AuthComponent implements OnInit {
constructor(private route: ActivatedRoute) { }
ngOnInit() {
console.log(this.route.snapshot);
console.log(this.route.snapshot);
}
}
Run Code Online (Sandbox Code Playgroud)
登录成功后, keycloak会返回 access_token ,如下所示:
http://localhost:4200/auth#access_token=qwerty123&session_time=123456789
我的问题是,如何让它发挥作用并获取 access_token。
我有一个包含md5哈希的数据库,我想将它们转换为另一种类型的哈希,以便用户可以登录到新网站.
我正在使用该werkzeug.security库来生成哈希值.
我有办法做到这一点吗?
我想为客户端的 subscribed_users 分页,但我收到一条错误消息:
cl = Client.query.filter_by(family='John').first()
cl.subscribed_users.paginate()
Run Code Online (Sandbox Code Playgroud)
AttributeError: 'InstrumentedList' object has no attribute 'paginate'
这是我的models.py
subscribers = db.Table(
'clients_subscribed',
db.Column('client_id', db.Integer, db.ForeignKey('client.id', ondelete='CASCADE')),
db.Column('user_id', db.Integer, db.ForeignKey('user.id', ondelete='CASCADE'))
)
class Client(db.Model):
subscribed_users = db.relationship(
'User',
secondary=subscribers,
backref=db.backref('user', passive_deletes=True, lazy='dynamic')
)
Run Code Online (Sandbox Code Playgroud)