В настоящее время я работаю над интрасети для моей стажировки (ученик 1-го курса). Я взял последний код стажеров и должен был отладить его/сделать некоторые настройки. До сих пор это здорово. но сейчас моя работа заключается в том, чтобы перейти от метода аутентификации Windows к форме, основанной на одном, и я довольно потерян, когда дело доходит до него. До сих пор я изменил режим проверки подлинности в моем Web.config к формам, но вот вопрос:Метод проверки подлинности формы на моей странице ASP.NET
Добавляя
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="2880" /> <!-- Was in comments -->
</authentication>
<authorization>
<deny users="?" />
</authorization>
к моему Web.config он перенаправляет меня на основную страницу входа, которая требует мне для ввода моей информации. (Из-за разрешения)
Но он по-прежнему отображается следующее содержимое из Site.Master:
<div class="float-right">
Welcome <%: System.Environment.UserName %> - <a href='<%= Url.Action("MyProfile", "Employee") %>'>My Profile</a> | <%: Html.ActionLink("Logout", "Deco", "Home") %>
</div> <!-- Should only display if logged in -->
Как будто я все еще вошли в систему, и я мог бы изменить свой профиль.
Есть ли способ отобразить его, только когда моя аутентификация на основе формы вошла в систему?
EDIT: Кроме того, что мне нужно сделать для переноса из Windows auth. на основе формы?
EDIT2: Вот код из моего AccountController:
[Authorize]
[InitializeSimpleMembership]
public class AccountController : Controller
{
//
// GET: /Account/Login
[AllowAnonymous]
public ActionResult Login(string returnUrl)
{
ViewBag.ReturnUrl = returnUrl;
return View();
}
//
// POST: /Account/Login
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Login(LoginModel model, string returnUrl)
{
if (ModelState.IsValid && WebSecurity.Login(model.UserName, model.Password, persistCookie: model.RememberMe))
{
return RedirectToLocal(returnUrl);
}
// If we got this far, something failed, redisplay form
ModelState.AddModelError("", "The user name or password provided is incorrect.");
return View(model);
}
//
// POST: /Account/LogOff
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult LogOff()
{
WebSecurity.Logout();
//FormsAuthentication.SignOut();
return RedirectToAction("Index", "Home");
}
Вы проверяете, если пользователь вошел в систему, а затем показать, что код или он там без проверки? Вы видите свое имя пользователя в System.Environment.UserName? – freshbm
@freshbm: Кажется, что нет подтверждения, и отображается имя пользователя. Но, похоже, она не указала имя пользователя (интрасети), но имя моей среды. – Christopher