我正在使用C#和SQL Server 2005开发ASP.Net MVC 3应用程序。我正在使用实体框架和代码优先方法。
我有一个LOG ON(连接)接口,它与我的基地有关,我有一个USER表(包含登录名+密码)。
这是连接视图:LogonPartial.acx(从UserViewModel强类型的局部视图)
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MvcApplication2.ViewModels.UserViewModel>" %>
<%
if (Request.IsAuthenticated) {
%>
Welcome <strong><%: Page.User.Identity.Name %></strong>!
[ <%: Html.ActionLink("Log Off", "LogOff", "Account") %> ]
<%
}
else {
%>
[ <%: Html.ActionLink("Log On", "LogOn", "Account") %> ]
<%
}
%>
当连接成功时:我只有“登录”链接。 连接失败时:页面为空
这是控制器:
[ChildActionOnly]
public ActionResult LogedInUser()
{
var user = new UserViewModel();
if (Request.IsAuthenticated)
{
user.Nom_User = User.Identity.Name;
}
return PartialView(user);
}
private GammeContext db = new GammeContext();
[AcceptVerbs(HttpVerbs.Post)]
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1054:UriParametersShouldNotBeStrings",
Justification = "Needs to take same parameter type as Controller.Redirect()")]
public ActionResult LogedInUser(string Matricule, string passWord, bool rememberMe, string returnUrl)
{
if (!ValidateLogOn(Matricule, passWord))
{
return Connection(Matricule, passWord, returnUrl);
}
//FormsAuth.SignIn(Matricule, rememberMe);
if (!String.IsNullOrEmpty(returnUrl))
{
return Redirect(returnUrl);
}
else
{
return RedirectToAction("Index", "Home");
}
}
public ActionResult Connection(string Matricule, string passWord, string returnUrl)
{
List<User> users = db.Users.ToList();
ActionResult output = null;
if (users.Any())
{
foreach (User u in users)
{
if ((u.Matricule == Matricule) && (u.passWord == passWord))
{
output = View();
}
}
}
else
{
output = Redirect(returnUrl);
}
return output;
}
答案 0 :(得分:1)
我看不到您在哪里验证用户身份?如果你试试这个怎么办:
if (!ValidateLogOn(Matricule, passWord))
{
return Connection(Matricule, passWord, returnUrl);
}
// user is valid, authenticate
FormsAuthentication.SetAuthCookie(Matricule, true);
答案 1 :(得分:1)
您的ActionLink需要正确更新。
应采用上例中的格式:
<%: Html.ActionLink("Text on UI", "MethodNameInController", "ControllerName") %>
您还没有完成上述操作 - 您的操作链接在控制器中没有方法。我还建议你阅读本教程 -
http://www.asp.net/mvc/tutorials/getting-started-with-aspnet-mvc3/cs/intro-to-aspnet-mvc-3