我正在使用Entity Framework 6.0(代码优先)在ASP.NET MVC4中使用登录/注册系统,我想知道如何正确处理POST-s。
我的用户模型:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
namespace Autokereskedes.Models
{
public class User
{
//Saját Kulcs
[Key]
public int UserId { set; get; }
//Külső kulcsok
//Model hivatkozások
public List<Reservation> Reservations { set; get; }
//Egyedi elemek
[Required]
[EmailAddress]
[StringLength(254)]
[Display(Name = "E-mail")]
public string Email { set; get; }
[Required]
[DataType(DataType.Password)]
[StringLength(100,MinimumLength=4)]
[Display(Name = "Jelszó")]
public string Password { set; get; }
public string Phone { set; get; }
public Boolean Banned { set; get; }
public string Country { set; get; }
public string City { set; get; }
public string Street { set; get; }
public int? ZipCode { set; get; }
public DateTime RegistrationDate { set; get; }
public DateTime? LastLoginDate { set; get; }
public DateTime? PasswordChangedDate { set; get; }
}
}
我的LogIn功能:
[HttpPost]
public ActionResult LogIn(User user)
{
if (ModelState.IsValid)
{
if (IsUserDataValid(user.Email, user.Password))
{
FormsAuthentication.SetAuthCookie(user.Email, user.???)
}
}
return View();
}
我想基于登录表单中的复选框设置持久性cookie,但我的用户模型没有public Boolean StayLoggedIn;
属性,我也不希望此选项也存储在我的数据库中。我该怎么处理?
我的登录表单:
@using (Html.BeginForm())
{
@Html.ValidationSummary(true, "Sikertelen belépés, ellenőrizze adataid!");
<div>@Html.LabelFor(u => u.Email)</div>
<div class="input-control text">
@Html.TextBoxFor(u => u.Email, new { @placeholder = "Írja be az email címét"})
@Html.ValidationMessageFor(u => u.Email)
<button class="btn-clear"></button>
</div>
<div>@Html.LabelFor(u => u.Password)</div>
<div class="input-control password">
@Html.TextBoxFor(u => u.Password, new { @placeholder = "Írja be jelszavát" })
@Html.ValidationMessageFor(u => u.Password)
<button class="btn-reveal"></button>
</div>
<label class="input-control checkbox">
<input type="checkbox">
<span class="helper">Bejelentkezve marad</span>
</label>
<input type="submit" value="Bejelentkezés" />
}
答案 0 :(得分:0)
根据默认项目模板中的默认帐户模型类,您应该有一个RegisterInputModel和一个LoginInputModel
答案 1 :(得分:0)
我认为您必须为登录页面创建另一个模型:
class LogInModel
{
public string UserName { get; set; }
public string Pass { get; set; }
public bool StayLoggedIn { get; set; }
}
并根据此模型创建视图,并在控制器中检索此模式。
在登录页面中使用用户模型不是一个好主意。