覆盖Flask-UserFlask-Login的默认模板。

问题描述 投票:0回答:1

我也发现了一个类似的问题 此处但这个答案似乎对我不起作用。

我使用Flask用户(我相信是Flask登录的扩展),大部分情况下它工作得很好。我为登录和注册建立了自己的全新模板,而不是使用他们提供的模板。按照 文件我把这些模板放在了 templates/flask_user/login.html, templates/flask_user/register.html 诸如此类。

我还设置了 USER_UNAUTHENTICATED_ENDPOINT = "login"USER_UNAUTHORIZED_ENDPOINT = "login" 在我的配置文件中,其中 login 是我的登录路径的名称。

问题是,如果我已经注销,并试图直接访问一个需要用户登录的页面,我将被发送至 http://localhost:5000/user/sign-in 并显示 Flask-Login 签到页面。这有两个问题。1)这不是正确的签到路线,2)这不是正确的签到模板。

如果有谁能对此提出帮助,我将感激不尽。

EDIT:

代码来自 __init__.py 来初始化应用程序和LoginManager。

app = Flask(__name__)

@app.context_processor
def inject_production_status():
    return dict(production=True)

# Initialise flask_login
login = LoginManager(app)
login.login_view = 'login'
login.refresh_view = "login"
login.needs_refresh_message = "Please sign in again to access this page"

的底部定义了LoginManager: UserManager models.py:

user_manager = UserManager(app, db, User)
python flask flask-login flask-user
1个回答
2
投票

我实施了@JBLaf的建议,但这并没有解决这个问题。我意识到,我所看到的默认登录页面实际上并不是我所看到的 flask-login's login.html 模板,但其 login_auth0.html 的模板。这是一个模板,我在自己的 flask_user 文件夹,因为我认为没有必要。

有两种方法可以解决这个问题。

  1. 设置 USER_ENABLE_AUTH0 = False. 这使得它使用 login.html 模板,这是我自己定制的。但是,这给我下线带来了问题,因为我是允许SSO登录的。所以更好的解决方案是。
  2. 创建一个 login-auth0.html 档案在我 templates/flask_user 文件夹中,只包含行 {% include 'flask_user/login.html' %}.

现在Flask-User将尝试重定向到auth0模板,这将使我的 login.html 模板。


0
投票

UserManager 需要在 __init__.py 而不在 models.py. UserManager 将负责初始化 LoginManager.

你需要更换在 __init__.py :

# Initialize flask_login
login = UserManager (app, db, User)
login.login_view = 'login'
login.refresh_view = "login"
login.needs_refresh_message = "Please sign in again to access this page"

# Initialize flask_user
from .models.user_models import User
user_manager = UserManager (app, db, User)
...
# login is now accessible by user_manager.login_manager

(并将其从 models.py)

下面是一个例子。https:/github.comlingthioFlask-User-starter-appblobmasterapp。启动.py

与问题无关,但只是以防万一。从长远来看,你会更容易看一看。app.config.from_object 以更容易地处理生产和开发配置。

© www.soinside.com 2019 - 2024. All rights reserved.