Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Tratamento de login do WebSecurity

Olá,

Dentro do LoginController tenho o método autentica:

        public ActionResult Autentica(String login, String senha)
        {
            if (WebSecurity.Login(login, senha))
            { 
               return RedirectToAction("Index", "Movimentacao");
            }
            else
            {

               return View("Index");
            }
        }

Gostaria de tratar as informações, por exemplo, se a senha ou login não forem informadas a pagina retorna o seguinte erro:

Server Error in '/' Application.

Value cannot be null or an empty string. Parameter name: password

Se não forem informados o login ou senha, gostaria de lançar uma ValidationMessage no formulário abaixo.

<form action="@Url.Action("Autentica")" method="post">
    @Html.ValidationMessage("login.Invalido")

    <label for="login">Login:</label>
    <input id="login" type="text" name="login" class="form-control" />


    <label for="senha">Senha:</label>
    <input id="senha" type="password" name="senha" class="form-control" />


    <input type="submit" value="Autenticar" />
</form>

Qual a melhor forma de fazer isto?

1 resposta
solução!

Olá Danilo,

tem duas formas que você pode fazer isso. Um delas é validando na mão mesmo as string verificando se elas estão vazias, adicionando no ModelState uma mensagem de erro com o AddModelError se alguma não estiver válida e verificando o ModelState.IsValid junto com o WebSecurity.Login.

Outra forma que você pode fazer é que se não me engano, o WebSecurity lança uma Exception quando ele recebe o username ou a password vazio. Você poderia tratar esta exceção com um try/catch e no catch adicionar no ModelState a mensagem de erro e retornar para a tela de login.