Как реализовать пользовательские разрешения на основе репутации, такие как SO? - PullRequest
5 голосов
/ 28 июня 2011

Вы можете подумать, что этот вопрос должен касаться Meta SO, но не должен, так как он в основном касается ASP.Net MVC, но метод, который я хочу реализовать, уже реализован в SO.

Я хочупользователи получают власть, в то время как они набирают больше репутации, как и в StackOverflow, и мой вопрос в том, как спроектировать систему аутентификации пользователей?Можем ли мы полагаться на встроенную проверку подлинности с помощью форм?и как управлять тем, какие ссылки (в зависимости от репутации) показывать пользователю, а какие нет?

Я думаю, что здесь мы не можем использовать роли, поэтому у нас не получается 1000 ролей, верно?но мы можем использовать только 2 роли (Администратор, Пользователь).

[Редактировать]:
Я думаю, что лучше создать свою собственную таблицу пользователей, а не в зависимости от проверки подлинности с помощью форми поэтому я могу добавить поле репутации (и другие поля) в таблицу пользователей и отслеживать его, как вы сказали.Кстати, @MartinHN, я знаю о if, о котором вы говорили, но у меня вопрос, есть ли более разумный способ решения таких вопросов?

Ответы [ 2 ]

5 голосов
/ 28 июня 2011

Вы можете создать простую систему правил.Каждый пользователь имеет оценку репутации, связанную с ним.Затем, используя фильтр действий , вы можете контролировать доступ к функциям в вашей системе:

public class SomeController : IController
{
    ...
    [ReputationNeeded(Reputations.CanVoteDown)] // your custom action filter
    [HttpPost]
    public ActionResult VoteDown(...)
    { /* */ }
}

Удачи!

3 голосов
/ 28 июня 2011

Управление репутацией пользователя и тем, к чему он / она имеет доступ (измеряется репутацией), не должно быть частью самого механизма аутентификации, ИМХО.

В Интернете вы в основном используете проверку подлинности с помощью форм, и после проверки подлинности вы можете применить репутацию к пользователю и закрыть области, если у него недостаточно репутации.не сделает эту функцию частью системы аутентификации.Я бы просто позволил пользователям проходить аутентификацию, а затем отображать соответствующие представления для любого данного пользователя.

Скажите, что ваши основные изменения в навигации зависят от репутации.Вы оборачиваете элементы панели навигации, которые требуют более 1000 повторений.с оператором if и не показывать его, если у пользователя меньше 1000.

...