2017-01-12 11 views
0

現在、私は私のフラスコ-管理プロジェクトにメニューバー上のログインおよびログアウトのリンクを表示するには、次のコードを使用します。フラスコ-Securityのログインとログアウト

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

しかし、これは両方に関係なく表示されます現在のユーザーがログインしているかどうかを確認します。ログイン時にログアウトを表示し、ログアウト時にログインすることは可能ですか? {% if item.is_accessible() and item.is_visible() %}ライン

{% 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 %} 

お知らせ:フラスコ-管理(layout.html)でのメニューテンプレートの定義を見てみると

答えて

1

。継承されたMenuLinkクラスを作成し、is_accessible()またはis_visible()を上書きします。

例(非試験):

from flask_security import current_user 

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")) 
関連する問題