Flask - Создать страницу указателя только с авторизованным маршрутом для пользователя. - PullRequest
0 голосов
/ 07 мая 2018

Я программирую информационную панель с двумя ролями (пользователь и администратор). У меня есть декоратор под названием requires_admin, который запрещает доступ простого пользователя к странице.

Моя проблема в том, что у меня есть индексная страница со всеми перечисленными маршрутами, и я хочу отображать только маршруты, разрешенные для этого конкретного пользователя.

Это означает, что я хочу знать, какие маршруты имеют декоратор requires_admin, а какие нет.

Это как-то возможно?

1 Ответ

0 голосов
/ 07 мая 2018

Если вы хотите использовать свои пользовательские роли, то, когда кто-то входит в систему, вы можете сохранить его данные, включая их роль в сеансе фляги, как это

from flask import session as login_session
login_session['user_role'] = user.role #assuming you have queried your user object whose attributes include role

Затем при рендерингешаблон, вы можете передать роль пользователя

user_role  = login_session['user_role']
return render_template('index.html', user_role= user_role)

Затем в вашем шаблоне (просто использую ссылку, но вы можете заключить целый div)

{% if user_role == 'admin'%}
<a href ="/secretdash">Dashboard</a>
{%endif%}

Но яНастоятельно рекомендую использовать колбу-защиту (или, как указано в комментариях, принцип-колба, который является одним из модулей в колбе-защите).С принципом «флеш-безопасность / фляга» вы можете сделать следующую ссылку

1) только для зарегистрированных пользователей

{% if current_user.is_authenticated %}
 <li> <a href="/firstdashboard"> Dashboard </a> </li>
{% endif %}

2) Ссылка для пользователей только с определенными ролями

{% if current_user.has_role('admin') %}
<li><a href="/secretdash">Secret Dash</a></li>
{% endif %}
...