#model-view-controller #asp.net-mvc-2
#model-view-controller #asp.net-mvc-2
Вопрос:
Уважаемые все, я хочу отключить анонимный доступ к моему приложению MVC 2, для этого я добавляю приведенный ниже код в файл web.config <deny users="?" />
После запуска этого приложения со страницы входа, но оно не использует стили masterpage и css
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="2880" />
</authentication>
Это код страницы входа в систему
`<%@ Page Language=»C #» MasterPageFile=»~/Views/Shared/Site.Master» Наследует=»System.Web.Mvc.ViewPage» %>
Войдите в систему
Войдите в систему
Пожалуйста, введите свое имя пользователя и пароль. <%: Html.ActionLink(«Регистрация», «Register») %> если у вас нет учетной записи.
<% using (Html.BeginForm()) { %>
<%: Html.ValidationSummary(true, "Login was unsuccessful. Please correct the errors and try again.") %>
<div>
<fieldset>
<legend>Account Information</legend>
<div class="editor-label">
<%: Html.LabelFor(m => m.UserName) %>
</div>
<div class="editor-field">
<%: Html.TextBoxFor(m => m.UserName) %>
<%: Html.ValidationMessageFor(m => m.UserName) %>
</div>
<div class="editor-label">
<%: Html.LabelFor(m => m.Password) %>
</div>
<div class="editor-field">
<%: Html.PasswordFor(m => m.Password) %>
<%: Html.ValidationMessageFor(m => m.Password) %>
</div>
<div class="editor-label">
<%: Html.CheckBoxFor(m => m.RememberMe) %>
<%: Html.LabelFor(m => m.RememberMe) %>
</div>
<p>
<input type="submit" value="Log On" />
</p>
</fieldset>
</div>
<% } %>
`
может кто-нибудь подсказать мне, чего мне не хватает?
Ответ №1:
Не используйте <deny users="?" />
в ASP.NET MVC. Используйте [Authorize]
атрибут для оформления контроллеров / действий, которые необходимо защитить. Так, например, если вы хотите защитить все контроллеры, у вас мог бы быть базовый контроллер, который будет украшен этим атрибутом:
[Authorize]
public abstract class BaseController: Controller
{
protected BaseController() {}
}
а затем на ее основе выводятся другие контроллеры. Очевидно, что LoginController
не должен быть производным от этого базового контроллера, поскольку ему необходимо отображать форму входа, не требуя аутентификации.
Комментарии:
1. Мистер Дарин Димитров, большое вам спасибо, все работает идеально 🙂