MVC 4 で Web アプリケーションを作成しています。ユーザーがログインしているかどうかに基づいて、別のビューを作成してレンダリングするにはどうすればよいですか? 私はプログラミングが初めてなので、正しい質問をしているかどうかわかりません。私はこれをオンラインで見ましたが、初心者がそれを行うように導くリソースは見つかりませんでした. これはコントローラーで行われると確信していますが、私の質問は、ユーザーがログインしていることを確認した後、コントローラーに別のビューをレンダリングするように指示する方法です。ただし、これを行う他の明白で効率的な方法がある場合は、誰かがこの質問に答えるために時間を割いてくれたら、とてもありがたいです。
質問する
825 次
2 に答える
1
あなたがするとき、オーバーライドがありますreturn View()
return View("myView", myModel");
例えば
public ActionResult Index()
{
if(User.Identity.IsAuthenticated)
return View("GoodUser");
return View("BadUser");
}
しかし、あなたが初めての場合は、次の 2 つのことをお勧めします。
- http://www.asp.net/mvcで無料で入手できるオンラインの呪いの穴を参照してください(右側の「重要なビデオ」と書かれている場所)。
- MVC3 プロジェクトを作成し、メンバーシップに既に付属しているため、その方法を確認します
于 2013-06-08T22:56:07.700 に答える
0
フォーム認証を使用できます。
ビューモデル:
public class LogIN
{
[Required]
[DisplayName("User name")]
public string UserName { get; set; }
[Required]
[DataType(DataType.Password)]
[DisplayName("Password")]
public string Password { get; set; }
}
リポジトリ:
public class LogInRepository
{
public bool CheckUser(string UserName, string Password)
{
//Query the database here and return true or false depending on the username and the password
}
}
コントローラ:
[HttpPost]
public ActionResult LogOn(LogIN model, string returnUrl)
{
if (ModelState.IsValid)
{
LogInRepository rep = new LogInRepository();
string UserRole = string.Empty;
if (rep.CheckUser(model.UserName, model.Password))
{
FormsAuthentication.SetAuthCookie(model.UserName);
if (!string.IsNullOrEmpty(returnUrl))
return Redirect(returnUrl);
else
return Redirect(FormsAuthentication.DefaultUrl);
}
else
{
ModelState.AddModelError("", "The user name or password provided is incorrect.");
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
意見:
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Account LogIn</legend>
<div class="editor-label">
@Html.LabelFor(model => model.UserName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.UserName)
@Html.ValidationMessageFor(model => model.UserName)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Password)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Password)
@Html.ValidationMessageFor(model => model.Password)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
Web.config 設定:
<authentication mode="Forms">
<forms loginUrl="~/Test/LogOn" timeout="2880" defaultUrl="~/Test/Index" />
</authentication>
<authorization>
<deny users="?" />
<allow users="*" />
</authorization>
ユーザーがログオンしていない場合、ユーザーはログオン ビューにリダイレクトされ、ログインしている場合はインデックス ビューにリダイレクトされます。
于 2013-06-09T03:53:30.863 に答える