基于路由登录的c# MVC4登录动作

本文关键字:登录 MVC4 于路由 路由 | 更新日期: 2023-09-27 18:10:25

在我的c# MVC4应用程序中,我在每个视图的顶部有两个选项卡。一个标签为edit,另一个标签为Admin。当单击这两个选项卡中的任何一个时,用户将被重定向到登录页面。在Login ActionResult中,验证用户后,执行检查,查看用户是否属于我用作角色的特定AD组。这一切都能正常工作。我的问题是试图检测并根据用户是否通过单击编辑或单击管理访问登录执行操作。

我如何获取这些信息?我试过这样写:

if(HttpContext.Request.UrlReferrer.OriginalString.Contains("Edit"))

但是包含的Url类似于Account/Login

我当前的代码是:

public ActionResult Login(LoginModel model, string returnUrl)
        {
            //Checks if user exists in Active Directory
            if (ModelState.IsValid && Membership.ValidateUser(model.UserName, model.Password))
            {
                    //Logs user in by creating a cookie
                    FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
                    //Checks to see if user belongs to a group with Edit or Admin Priviledges
                    if ((Roles.IsUserInRole(model.UserName,"TCL-CAdmin")) || (Roles.IsUserInRole(model.UserName, "TCL-CGroup")))
                    {
                        return RedirectToAction("Index", "Home");
                    }
                    else
                    {
                        return RedirectToAction("Index_Perm", "Home");
                    }
                }
            ModelState.AddModelError("", "The user name or password provided is incorrect.");
            return View(model);
        }

在我的布局中创建了两个选项卡。CSHTML:

 <ul id="menu">
                        <li>@Html.ActionLink("Edit", "Login", "Account")</li>
                        <li>@Html.ActionLink("Admin", "Admin", "Home")</li>
                    </ul>

基于路由登录的c# MVC4登录动作

我看到你没有在控制器动作中使用returnUrl参数,你可以像这样传递它:

@Url.Action("Login", "Account", new { returnUrl = Request.RawUrl })

除此之外,您还可以传递另一个参数作为上下文,例如:

@Url.Action("Login", "Account", new { returnUrl = Request.RawUrl, context = "Edit" })

并将您的动作签名更改为:

public ActionResult Login(LoginModel model, string returnUrl, string context)

你是这个意思吗?