我正在开发一个项目,其管理员可以访问表单的所有控件,但其他人不能没有。我怎样才能实现这个目标?
一个想法是当用户想要使用管理员登录时,然后登录软件必须检查互联网服务是否可用,如果互联网服务可用,然后邮寄必须从谷歌服务器选择的时间并用登录信息邮寄该时间。所以管理员必须提醒某人使用您的帐户登录。
但是,如果互联网服务不可用,那么将该信息保存在必须放在系统中的文本文件中,当服务可用时,只需管理员获取该日志文件并询问使用admin登录的用户?
答案 0 :(得分:0)
我认为如果您在应用程序中使用日志记录并将其配置为在访问具有敏感信息的页面时执行任何操作,则会更好。您可以使用log4net,Microsoft Enterprise Library Logging Application Block或ELMAH。这样,您可以将信息存储在文本或Xml文件,数据库,发送电子邮件等中。
C#
示例使用log4net
:
private static log4net.ILog oLog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
[HttpPost]
public ActionResult Login(LoginModel model, string returnUrl)
{
if (ModelState.IsValid)
{
if (Membership.ValidateUser(model.UserName, model.Password))
{
FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/")
&& !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\"))
{
if (this.User.IsInRole("Administrators"))
{
oLog.Info("Administrator logged in.");
}
return Redirect(returnUrl);
}
else
{
return RedirectToAction("Index", "Home");
}
}
else
{
ModelState.AddModelError("", "The user name or password provided is incorrect.");
}
}
// If we got this far, something failed, redisplay form
return View(model);
}