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 に答える