【问题标题】:Where to remove domain from username? ASP.NET MVC 4在哪里从用户名中删除域? ASP.NET MVC 4
【发布时间】:2012-11-02 16:23:16
【问题描述】:

这是一个用 MVC 4 编写的需要用户登录的 Intranet 应用程序。从用户输入的用户名中删除域的最佳位置在哪里? (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
                ...            

【问题讨论】:

    标签: asp.net-mvc-4 asp.net-authentication


    【解决方案1】:

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

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

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

    【讨论】:

    • 我想尽早验证。如何在视图中执行此操作?是否有必要在登录操作中也执行此检查?我喜欢您将域名放在文本框旁边的建议。
    • 您是否使用 DataAnnotations 进行客户端验证?
    • 我没有任何客户端验证。我应该使用jquery吗?我以前没有这样做过。
    • 那里有几个选项。值得一读的是msdn.microsoft.com/en-us/library/ee256141(VS.100).aspx
    • 您可以将正则表达式 DataAnnotation 添加到您的 UserName 以说明允许的内容,然后在连接后不显眼的客户端验证应该完成其余的工作,并且您添加了一条显示消息。
    猜你喜欢
    • 2018-09-07
    • 1970-01-01
    • 2014-06-04
    • 2012-11-23
    • 1970-01-01
    • 2015-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多