Как использовать ASP.NET MVC Account Controller? - PullRequest
10 голосов
/ 26 октября 2008

Я смотрю на контроллер учетных записей MVC, и он, кажется, из веб-форм ASP.NET. Есть ли хорошая справочная информация о том, как его использовать?

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

Как вы используете его в MVC для ограничения того, какие страницы могут просматривать зарегистрированные пользователи? Тебе нужно накатить все это самостоятельно?

Какие ресурсы в Интернете могут помочь понять членство в ASP.NET?

1 Ответ

18 голосов
/ 26 октября 2008

Я смотрю на учетную запись MVC контроллер .... кажется, что из asp.net?

Скотт Гатри довольно хорошо объясняет это в своей записи в блоге о ASP.NET MVC Preview 4 . Он в основном говорит, что Account Controller из примера MVC использует поставщика членства ASP.NET, поэтому вы можете использовать любой из них. (Я думаю, что вы можете узнать больше о поставщиках членства в ASP.NET в Интернете.) Если вы не хотите внедрять / использовать один из них, вероятно, лучшим вариантом будет модификация приложения для использования собственного управления пользователями. *

Как вы используете его в MVC для ограничить какие страницы вошли пользователь можно посмотреть? Вы должны свернуть все что по вашему?

Вы можете добавить атрибут Authorize к классу контроллера или методу действия. (Тот же источник , что и выше.)

// Only logged in users can access this controller.
[Authorize]
public class SomeController : Controller
{
    #region Not really important for this example. :]
    // Maybe rather use a BLL service here instead of the repository from the DAL, but this example is already more verbose than required.
    private IStuffRepository stuffRepository;

    public SomeController(IStuffRepository stuffRepository)
    {
        if (null == stuffRepository)
        {
            throw new ArgumentNullException("stuffRepository");
        }

        this.stuffRepository = stuffRepository;
    }
    #endregion

    // The authorize attribute is inherited - only logged in users can use the index action.
    public ActionResult Index()
    {
        return View();
    }

    // Moderators can flag stuff.
    [Authorize(Roles="Moderator")]
    public ActionResult Flag(int id)
    {
        this.stuffRepository.Flag(id);
        return RedirectToAction("Index");
    }

    // Admins ans SysOps can delete stuff.
    [Authorize(Roles="Admin,SysOp")]
    public ActionResult Delete(int id)
    {
        this.stuffRepository.Delete(id);
        return RedirectToAction("Index");
    }

    // Only joed can change the objects stuff. ;)
    // (This is probably bullshit, of course, but I could not make any better example. I blame the fact it is late at night. :))
    [Authorize(Users="COMPANY\\joed")]
    public ActionResult ChangeId(int oldId, int newId)
    {
        this.stuffRepository.ChangeId(oldId, newId);
        return RedirectToAction("Index");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...