如何在asp.net MVC中提供对管理员和成员的id和密码的适当访问

本文关键字:id 成员 密码 访问 管理员 asp net MVC | 更新日期: 2023-09-27 18:04:23

我已经创建了一个登录页面,从登录页面管理员和成员可以执行登录通过输入尊敬的登录用户名和密码。在这一点上,我想提供不同的访问管理员和成员,即。1. For Admin: Admin可以访问该组的所有数据,这意味着他可以添加金融机构和成员的详细信息。2. For Member: Member不能访问所有的数据,他只能查看金融机构和其他成员的详细信息,但他可以编辑自己的信息。

为此,我使用了if循环....以下是登录后对admin的所有访问的代码:

控制器:

public ActionResult Index()
        {
            var list = from instituteinformation in db.InstituteInformationDBS
                       join addresscontact in db.AddressAndContactDBS
                       on instituteinformation.Id equals addresscontact.Id
                       join bankinformation in db.BankInformationDBS
                       on instituteinformation.Id equals bankinformation.Id
                       where instituteinformation.Id.Equals(addresscontact.Id)
                       select new FinancialInstituteWrapper
                       {
                           ObjInstituteInformation=instituteinformation,
                           objAddressAndContact=addresscontact,
                           objBankInformation=bankinformation
                       };
            return View(list);
        }

视图:

<h2>Index</h2>
    <p>
        <%: Html.ActionLink("Create New", "Create") %>
    </p>
<table>
    <tr>
        <th>
            Institute Name
        </th>
        <th>
            Owners FirstName
        </th>
        <th>
            Owners LastName
        </th>
        <th>
            Address 
        </th>
</tr>
<% foreach (var item in Model) { %>
    <tr>
                <td>
            <%:Html.DisplayFor(modelItem=>item.ObjInstituteInformation.InstituteName) %>
        </td>
        <td>
            <%:Html.DisplayFor(modelItem=>item.ObjInstituteInformation.OwnersFirstName) %>
        </td>
        <td>
            <%:Html.DisplayFor(modelItem=>item.ObjInstituteInformation.OwnersLastName) %>
        </td>
        <td>
            <%:Html.DisplayFor(modelItem=>item.objAddressAndContact.AddressLine1) %>,
            <%:Html.DisplayFor(modelItem=>item.objAddressAndContact.AddressLine2) %>
        </td>
<td>
            <%: Html.ActionLink("Edit", "Edit", new {id=item.ObjInstituteInformation.Id  }) %> |
            <%: Html.ActionLink("Details", "Details", new {id=item.ObjInstituteInformation.Id  }) %> |
            <%: Html.ActionLink("Delete", "Delete", new {id=item.ObjInstituteInformation.Id  }) %>
        </td>
</tr>
<% } %>
</table>

Admin登录后,Financial Institute将在索引页显示以下内容:

InstituteName     FirstName   LastName   Address
ABC                ABC          ABC       ABC          Edit   Details   Delete

如果成员通过id登录并传递,则应该显示如下:

   InstituteName     FirstName   LastName   Address
    ABC              ABC              ABC     ABC  

在视图中,我希望代码像这样

    <h2>Index</h2>
        <p>
    <%if(Admin id and password){%>
            <%: Html.ActionLink("Create New", "Create") %>
    <%} else{%>
cant create the new institute
<%}%>
        </p>

请告诉我怎么做.....

我已经创建了这样的登录页面:

public class Login
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int ID { get; set; }
        public string UserName { get; set; }
        public string Password { get; set; }
    }

Controller:
        public ActionResult Login()
        {
            return View();
        }
        [HttpPost]
        public ActionResult Login(Login login, MemberBasicInformation memberlogin, string returnUrl)
        {
            using (WrapperDB db = new WrapperDB())
            {
                string usename = memberlogin.UserName;
                string pass = memberlogin.Password;
                bool userValid = db.MemberBasicInformationDBS.Any(user => user.UserName == usename && user.Password == pass);
                if (userValid)
                {
                    FormsAuthentication.SetAuthCookie(usename, false);
                    if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/")
                        && !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/''"))
                    {
                        return Redirect(returnUrl);
                    }
                    else
                    {
                        return RedirectToAction("Index", "Home");
                    }
                }
                else if (login.UserName.Equals("admin") && login.Password.Equals("admin"))
                {
                    return RedirectToAction("Index");
                }
                else
                {
                    ModelState.AddModelError("", "Incorrect Credentials!!");
                }
            }
            return View();
        }
For MemberLogin username and password will be taken fro the following model:

public class MemberBasicInformation
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int Id { get; set; }
        [Required]
        public string MemberFirstName { get; set; }
        [Required]
        public string MemberLastName { get; set; }
        public string Gender { get; set; }
        [DataType(DataType.DateTime)]
        [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy-MM-dd}")]
        public DateTime DOB { get; set; }
        [Required]
        public string Qualification { get; set; }
        public string UserName { get; set; }
        public string Password { get;set; }
    }

如何在asp.net MVC中提供对管理员和成员的id和密码的适当访问

您可以为您所要求的安全性添加两个选项首先在像这样的控制器

[Authorize(Roles="Admin")]
 public ActionResult Login()
    {
        return View();
    }

或者如果您不想对模型进行验证。在特定项目的视图中,你想让它在

内显示为specific
  •   @if (User.IsInRole){
             <li>some thing</li>
    }
    

    但是你应该在第二个例子中为用户创建角色,我试过了,效果很好

  • 可以使用

    User.IsInRole("roleName")
    

    在您的视图上为确定的角色隔离代码。例如,这可以用来对没有权限的用户隐藏按钮。

    在控制器上你可以使用

    [Authorized(Roles = "RoleList")] 
    public ActionResult yourAction(){}
    

    允许一个或多个角色中的用户执行不同的操作,您还可以使用User。