启明星系统推荐是安装在内网里,因此,系统采用了较为简单的身份验证。
事实上,在访问页面时,系统会判断当前cookie的uid是否大于0,如果是,则表示用户已经登录,否则表示未登录。
public static int GetUserId { get { return (HttpContext.Current.Request.Cookies["userinfo"] == null) ? -1 : int.Parse(HttpContext.Current.Request.Cookies["userinfo"]["userid"]); } }
然后在母版master页面判断UserId是否大于0:
if (UserHelper.GetUserId > 0) { //已经登录 } else { Response.Redirect("login.aspx"); }
对于内网来说,基本上安全性可以满足,但是对于放到公网的用户,就需要考虑攻击者可以很容易伪造cookie来绕过身份验证。
对于放到公网上的用户,请打开web.config里,增加如下红色配置。
将强制系统采用ASP.NET 系统内置的身份验证。
<system.web> <authorization> <deny users="?"/> </authorization> </system.web>
-------------------------------------以上----------------------------------------------------------------------------------------------------------
对于放到公网上的用户,上面基本上能给很好的满足系统的安全性。不过可能希望系统自动记住用户登录名和密码。其实在我们的登录代码里
HttpContext.Current.Response.Cookies[FormsAuthentication.FormsCookieName].Path = path; HttpContext.Current.Response.Cookies[FormsAuthentication.FormsCookieName].Expires = DateTime.Now.AddDays(7);
可是你会发现,当增加了 <deny users="?" /> 后,系统似乎记不住cookie,基本上每次访问还是需要登录。
这是因为ASP.NET会在系统运行时,会自动生成随机的计算机密钥。
您可以通过如下方法,来强制ASP.NET使用唯一密钥。
打开IIS。左边选择你的应用程序。然后在右边找到计算机密钥
从图中可以看到,在应用程序每次运行时,系统都随机生成一个计算机密钥。
单击右边的“生成密钥”
单击应用
此时,系统会自动在web.config增加machieKey密钥。这样,使用Form身份验证,就可以记住您的账户了。
时间: 2024-10-09 10:31:43