1

这是一个用 MVC 4 编写的内部网应用程序,需要用户登录。从用户输入的用户名中删除域的最佳位置在哪里?( Username.Name.Split('\')[1];)。这是在用户进入域的情况下。

看法:

@Html.ValidationSummary(true, "Login failed.")
@using (Html.BeginForm())
{
    <div style="width: 400px">
        <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>
            ...

登录型号:

[Required]
[Display(Name = "Username")]
public string Username { get; set; }
....

控制器:

[HttpPost]
public ActionResult Login(LoginModel model, string returnUrl)
{
    if (ModelState.IsValid)
        {
        if (Membership.ValidateUser(model.Username, model.Password))
            {
                //set authentication cookie
                ...            
4

1 回答 1

0

如果您只想要用户名而不是域,为什么不尽早验证,例如不要在用户名中全部使用 \。正如您所建议的那样,在登录操作中始终有服务器验证来支持这一点,例如

if(model.UserName.Contains('\')  
         model.UserName = model.Username.Name.Split('\')[1]; 

如果始终是同一个域,请将域名放在文本框旁边,以明确它不是被要求的。

于 2012-11-02T16:32:25.670 回答