如何通过登录,授权,身份验证使用会话?

时间:2018-11-11 13:12:34

标签: asp.net-mvc-5

首先,在编程方面,我是一个新手,我只是自学而已,我想寻求自己无法解决的解决方案

我无法使其正常运行。我希望Session [“ userlevel”] ==“ Admin”是访问该视图的唯一方法,请问如何使它起作用。

public  ActionResult Authorize(Test user)
    {

        using (TableEntities db = new TableEntities())
        {

            var loginUserAdmin = db.Employees.Where(x => x.Username == user.Username && x.UserPassword == user.UserPassword && x.AccountStatus == "Active" && x.AccountType == "Admin").FirstOrDefault();

            if (loginUserAdmin == null || loginUserAdmin != loginUserAdmin)
            {
                var loginUserStaff = db.Employees.Where(x => x.Username == user.Username && x.UserPassword == user.UserPassword && x.AccountStatus == "Active" && x.AccountType == "Staff").FirstOrDefault();
                if(loginUserStaff == null || loginUserStaff != loginUserStaff)
                {
                    var loginUserUser = db.Employees.Where(x => x.Username == user.Username && x.UserPassword == user.UserPassword && x.AccountStatus == "Active" && x.AccountType == "User").FirstOrDefault();
                    if(loginUserUser== null || loginUserUser != loginUserUser)
                    {
                        var loginUserAdmin1 = db.Employees.Where(x => x.Username == user.Username && x.UserPassword == user.UserPassword && x.AccountStatus == "Inactive" && x.AccountType == "Admin").FirstOrDefault();
                         if (loginUserAdmin1 ==null || loginUserAdmin1 != loginUserAdmin1)
                        {
                            var loginUserStaff1 = db.Employees.Where(x => x.Username == user.Username && x.UserPassword == user.UserPassword && x.AccountStatus == "Inactive" && x.AccountType == "Staff").FirstOrDefault();
                            if(loginUserStaff1 == null || loginUserStaff1 != loginUserStaff1)
                            {
                                var loginUserUser1 = db.Employees.Where(x => x.Username == user.Username && x.UserPassword == user.UserPassword && x.AccountStatus == "Inactive" && x.AccountType == "User").FirstOrDefault();
                                if (loginUserUser1 == null || loginUserUser1 != loginUserUser1)
                                {
                                    ViewBag.LoginError = "Invalid Credentials";
                                    return View("Login");
                                }
                                else
                                {
                                    ViewBag.LoginError = "Inactive User Account";
                                    return View("Login");
                                }
                            }
                            else
                            {
                                ViewBag.LoginError = "Inactive Staff Account";
                                return View("Login");
                            }
                        }
                        else
                        {
                            ViewBag.LoginError = "Inactive Administrator Account";
                            return View("Login");
                        }
                    }
                    else
                    {
                        ViewBag.Messageko = "User";

                        return RedirectToAction("Dashboard");
                    }
                }
                else
                {
                    ViewBag.Messageko = "Staff";

                    Session["userid"] = loginUserStaff.EmployeeID;
                    Session["firstName"] = loginUserStaff.FirstName;
                    Session["lastName"] = loginUserStaff.LastName;
                    Session["userName"] = loginUserStaff.Username;
                    Session["userPassword"] = loginUserStaff.UserPassword;
                    Session["userlevel"] = loginUserStaff.AccountType;

                    return RedirectToAction("Dashboard" , "Test", user);
                }


            }
            else
            {
                ViewBag.Messageko = "Admin";
                Session["userid"] = loginUserAdmin.EmployeeID;
                Session["firstName"] = loginUserAdmin.FirstName;
                Session["lastName"] = loginUserAdmin.LastName;
                Session["userName"] = loginUserAdmin.Username;
                Session["userPassword"] = loginUserAdmin.UserPassword;
                Session["userlevel"] = loginUserAdmin.AccountType;
                ViewBag.acc = loginUserAdmin.AccountType;





                return RedirectToAction("Dashboard", "Test" ,"Login");

            }

这是我的仪表板控制器

   [HttpGet]

    public ActionResult Dashboard()
    {
        TableEntities db = new TableEntities();
        ViewBag.Active = db.Employees.Where(x => x.AccountStatus == "Active");
        ViewBag.Message = "GG";
        return View();
    }

这是我的观点

@{
ViewBag.Title = "Dashboard";
Layout = "~/Views/Shared/_Layout.cshtml";
}
@if (Session["userlevel"].ToString() == "Admin")

{
     Response.Redirect("~/Test/Login");
 }
else
{
if (ViewBag.Active != null)
{ <label style="font-size:12px; color:red;">@ViewBag.Messageko</label>
<table class="table table-striped">
    <tr>
        <th>EmployeeID</th>
        <th>First Name</th>
        <th>Middle Name</th>
        <th>Last Name</th>
        <th>User Name</th>
        <th>User Password</th>
        <th>Account Status </th>
    </tr>
    @foreach (var User in ViewBag.Active)
    {
    <tr>
        <td align="center">@User.EmployeeID</td>
        <td align="center">@User.FirstName</td>
        <td align="center">@User.MiddleName</td>
        <td align="center">@User.LastName</td>
        <td align="center">@User.Username</td>
        <td align="center">@User.UserPassword</td>
        <td align="center" class="text-success">@User.AccountStatus</td>
    </tr>
    }

</table>
}

}

非常感谢

1 个答案:

答案 0 :(得分:0)

在Visual Studio 2015中,@ if(Session [“ userlevel”]。ToString()==“ Admin”)有效! 但是在2017年,我不知道

@if(Session [“ userlevel”]。ToString()。Trim()==“ Admin”)有效!