Python 在菜单栏中安全登录和注销

Python 在菜单栏中安全登录和注销,python,flask,flask-admin,Python,Flask,Flask Admin,目前,我使用以下代码在Flask Admin项目的菜单栏上显示登录和注销链接: admin.add_link(MenuLink(name='Logout', category='', url="/logout")) admin.add_link(MenuLink(name='Login', category='', url="/login")) 但是,无论当前用户是否登录,这两项都将显示。是否可以让它在登录时显示logout和注销时显示login?查看Flask Admin(layout.ht

目前,我使用以下代码在Flask Admin项目的菜单栏上显示登录和注销链接:

admin.add_link(MenuLink(name='Logout', category='', url="/logout"))
admin.add_link(MenuLink(name='Login', category='', url="/login"))

但是,无论当前用户是否登录,这两项都将显示。是否可以让它在登录时显示logout和注销时显示login?

查看Flask Admin(layout.html)中的菜单模板定义:


查看Flask Admin(layout.html)中的菜单模板定义:

{% macro menu_links(links=None) %}
  {% if links is none %}{% set links = admin_view.admin.menu_links() %}{% endif %}
  {% for item in links %}
    {% if item.is_accessible() and item.is_visible() %}
      <li>
        <a href="{{ item.get_url() }}">{{ menu_icon(item) }}{{ item.name }}</a>
      </li>
    {% endif %}
  {% endfor %}
{% endmacro %}
from flask_security import current_user
from flask_admin.menu import MenuLink
class LoginMenuLink(MenuLink):

    def is_accessible(self):
        return not current_user.is_authenticated 


class LogoutMenuLink(MenuLink):

    def is_accessible(self):
        return current_user.is_authenticated             

admin.add_link(LogoutMenuLink(name='Logout', category='', url="/logout"))
admin.add_link(LoginMenuLink(name='Login', category='', url="/login"))