C# 将数据发送到我的母版页
我正在处理一个内部网(纠正错误并添加功能)-但是管理员选项卡的显示有问题,它以任何方式显示 通过以下SQL请求,我现在可以知道该员工是否是管理员:C# 将数据发送到我的母版页,c#,sql,asp.net-mvc,forms-authentication,C#,Sql,Asp.net Mvc,Forms Authentication,我正在处理一个内部网(纠正错误并添加功能)-但是管理员选项卡的显示有问题,它以任何方式显示 通过以下SQL请求,我现在可以知道该员工是否是管理员: [HttpPost] [AllowAnonymous] [ValidateAntiForgeryToken] public ActionResult Login(LoginModel model, string returnUrl) { // Variables string isAdministrator; bool isA
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Login(LoginModel model, string returnUrl)
{
// Variables
string isAdministrator;
bool isAdmin;
// Checks the admin status of logging in user
using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString))
{
using (SqlCommand command = new SqlCommand("SELECT isAdministrator FROM Employee WHERE Login = '" + model.UserName + "'", connection))
{
connection.Open();
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
isAdministrator = reader[0].ToString();
isAdmin = Convert.ToBoolean(isAdministrator);
ViewData["isAdmin"] = isAdmin;
}
}
}
}
// Not relevant things related to logging in
return View(model);
}
行为应该是:如果isAdmin
为true,则显示“管理”选项卡(或简单地拒绝其访问),如果不是,则不显示
但我有两个主要问题:
- 我想知道在哪里可以填充我的
变量,以便无论发生什么情况都能填充它(这样我就不必登录才能填充它)isAdmin
- 我不知道如何将它的值传递给我的
站点。Master
ViewBag.IsAdmin=1
类似:
...
while (reader.Read())
{
isAdministrator = reader[0].ToString();
isAdmin = Convert.ToBoolean(isAdministrator);
ViewBag.IsAdmin = isAdmin;
break;
}
...
然后在_Layout.cshtml中,您可以使用ViewBag中的变量,如:
@if(ViewBag.IsAdmin == 1)
{
<div>
</div>
}
使用SqlParameter防止sql注入。我将尽快解决安全问题,谢谢。ViewBag不是用来向视图而不是母版页发送数据的吗?我希望将其发送到母版页,以便在需要时可以拒绝访问或停止显示管理页。事实证明,我为SimpleMembership创建了角色以及与之相关的所有内容,它就像一个符咒。
@if(HttpContext.Current.User.IsInRole("Administrator"))
{
<div>
</div>
}