Маршруты, которые не работают, всегда возвращаются на ту же страницу

#c# #asp.net-mvc #routes

#c# #asp.net-mvc #маршруты

Вопрос:

Я пытаюсь заставить маршруты работать, но независимо от того, что я делаю, меня всегда отправляют обратно в форму входа. Однако он переключается на просмотр профиля. Но не к любому из других представлений.

Действие

 [HttpPost]
        public ActionResult Authorise(tblUser user)
        {
            using (TrinityEntities db = new TrinityEntities())
            {
                var userEmail = db.tblUsers.Where(x => x.Email == user.Email).FirstOrDefault();
                var userPassword = db.tblUsers.Where(y =>  y.Password == user.Password).FirstOrDefault();

                //Check if email registered
                //if (userEmail == null)
                //{
                //    ViewBag.LoginIncorrect = "E-mail not registered, do you want to register?";
                //    return View("Index", user);
                //}

                //check login correct
                if (userEmail == null amp;amp; userPassword == null)
                {
                    ViewBag.LoginIncorrect = "E-mail or Password not correct";
                    return View("Index", user);
                }

                //Everything is correct so login
                //else if(userEmail.ToString() == user.Email amp;amp; userPassword.ToString() == user.Password)
                //{
                //    Session["User ID"] = user.Id;
                //    return RedirectToAction("Index", "Home");
                //}

                else
                {
                    //Session["UserID"] = user.Id;
                    ////int userID = user.Id;

                    //if (user.BIO == null )//|| user.Preffered == null || user.Sex == null || user.BIO == null)
                    //{
                    //    return RedirectToAction("index", "Chat");
                    //}

                    //return RedirectToAction("Index", "Home");
                    return Redirect("/chat");
                }

            }
        }
  

Вид входа в систему

 @model Trinity.Models.tblUser

@{

    ViewBag.Title = "Login";
}

<h2>Login</h2>


@using (Html.BeginForm("Authorise", "Auth", FormMethod.Post))
{

    <div class="form-horizontal">
        <hr />
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })
        <div class="form-group">
            @Html.LabelFor(model => model.Email, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.Email, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.Email, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(model => model.Password, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.Password, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.Password, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Login" class="btn btn-default" />
            </div>
        </div>
    </div>

    <div class="form-group">
        <div class="col-md-offset-2 col-md-10">
            <label class="label-warning">@ViewBag.LoginIncorrect</label>
        </div>
    </div>
}


@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
}
  

Просмотр чата

 @{
    Layout = null;
}

<!DOCTYPE html>
<html>
<head>
    <title>pChat amp;mdash; Private Chatroom</title>
    <link rel="stylesheet" href="@Url.Content("~/Content/app.css")">
</head>
<body>
<!-- Navigation Bar -->
<nav class="navbar navbar-inverse">
    <div class="container-fluid">
        <div class="navbar-header">
            <a class="navbar-brand" href="#">pChat - @ViewBag.currentUser.name </a>
        </div>
        <ul class="nav navbar-nav navbar-right">
            <li><a href="#">Log Out</a></li>
        </ul>
    </div>
</nav>
<!-- / Navigation Bar -->
<div class="container">
    <div class="row">
        <div class="col-xs-12 col-md-3">
            <aside class="main visible-md visible-lg">
                <div class="row">
                    <div class="col-xs-12">
                        <div class="panel panel-default users__bar">
                            <div class="panel-heading users__heading">
                                Contacts (@ViewBag.allUsers.Count)
                            </div>
                            <div class="__no__chat__">
                                <p>Select a contact to chat with</p>
                            </div>
                            <div class="panel-body users__body">
                                <ul id="contacts" class="list-group">

                                    @foreach (var user in @ViewBag.allUsers)
                                    {
                                        <a class="user__item contact-@user.id" href="#" data-contact-id="@user.id" data-contact-name="@user.name">
                                            <li>
                                                <div class="avatar">
                                                    <img src="@Url.Content("~/Content/no_avatar.png")">
                                                </div>
                                                <span>@user.name</span>
                                                <div class="status-bar"></div>
                                            </li>
                                        </a>
                                    }
                                </ul>
                            </div>
                        </div>
                    </div>
                </div>
            </aside>


        </div>
        <div class="col-xs-12 col-md-9 chat__body">
            <div class="row">
                <div class="col-xs-12">
                    <ul class="list-group chat__main"></ul>
                </div>
                <div class="chat__type__body">
                    <div class="chat__type">
                        <textarea id="msg_box" placeholder="Type your message"></textarea>
                        <button class="btn btn-primary" id="sendMessage">Send</button>
                    </div>
                </div>
                <div class="chat__typing">
                    <span id="typerDisplay"></span>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="@Url.Content("~/Content/app.js")"></script>

</body>
</html>

<script>
etc....
  

И конфигурация маршрута

 public class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Auth", action = "Index", id = UrlParameter.Optional }
            );

            //routes.MapRoute(
            //    name: "Default",
            //    url: "",
            //    defaults: new { controller = "Auth", action = "Index", id = UrlParameter.Optional }
            //);

            routes.MapRoute(
                name: "Profile",
                url: "profile",
                defaults: new { controller = "Profile", action = "Index" }
            );

            routes.MapRoute(
                name: "Home",
                url: "Home",
                defaults: new { controller = "Home", action = "Index" }
            );

            routes.MapRoute(
                name: "ChatRoom",
                url: "chat",
                defaults: new { controller = "Chat", action = "index" }
            );

            routes.MapRoute(
                name: "GetContactConversations",
                url: "contact/conversations/{contact}",
                defaults: new { controller = "Chat", action = "ConversationWithContact", contact = "" }
            );

            routes.MapRoute(
                name: "PusherAuth",
                url: "pusher/auth",
                defaults: new { controller = "Auth", action = "AuthForChannel" }
            );

            routes.MapRoute(
                name: "SendMessage",
                url: "send_message",
                defaults: new { controller = "Chat", action = "SendMessage" }
            );

            routes.MapRoute(
                name: "MessageDelivered",
                url: "message_delivered/{message_id}",
                defaults: new { controller = "Chat", action = "MessageDelivered", message_id = "" }
            );
        }
    }
  

Я просто хочу, чтобы он переключился на другие представления, которые по какой-то причине я не могу заставить работать.

Ответ №1:

После проверки учетных данных пользователей вам необходимо сохранить файл cookie :

 else
            {
                //Session["UserID"] = user.Id;
                ////int userID = user.Id;

                //if (user.BIO == null )//|| user.Preffered == null || user.Sex == null || user.BIO == null)
                //{
                //    return RedirectToAction("index", "Chat");
                //}

                //return RedirectToAction("Index", "Home");
            **FormsAuthentication.SetAuthCookie(username, false);**

                return Redirect("/chat");
            }
  

Комментарии:

1. Сохраню ли я имя пользователя или идентификатор пользователя?

2. @im_Ruben Проверка подлинности форм. SetAuthCookie() устанавливает cookie браузера для запуска сеанса пользователя. Это то, что позволяет пользователю входить в систему каждый раз, когда страница отправляется на сервер.

3. @im_Ruben Обычно мы используем имя пользователя в качестве файла cookie. но такого ограничения нет. вы также можете использовать идентификатор пользователя.