公司有个.net语言开发的系统,没天理的竟然没有做全局验证,导致公司通讯录的组织架构暴露在外面。
没办法,n年前的前辈们留下的坑,只好踩上了。
部门专家级高手提出方案:给系统增加单点登录逻辑,让每一个请求都到登录逻辑验证。具体的做法是:1、用户登录时,记录他的登录状态;2、其它的请求,若用户已登录,则顺利请求;若未登录,则请求失败。
代码有两部分。
1、在web.config配置文件增加author配置:
<authentication mode="Forms" >
<forms name="casauth" loginUrl="login.aspx" />
</authentication>
<authorization>
<deny users="?" />
</authorization>
这个模块是在System.web里面,可能这里配置了之后,在全局配置里面还要修改授权方式为Forms。
2、在登录逻辑里面:
Session["UserName"] = userName;
FormsAuthentication.RedirectFromLoginPage(userName, false);
第一条语句表示把某个信息放进缓存,好让登录后的请求有所依靠。第二条语句应该是重定向到真正的请求去。
上述做法是根据特定业务逻辑下所做的,已经能够实现对全部请求进行拦截验证,但它并不是真正的单点登录,只是借鉴了下单点登录的做法。在.net下配置cas单点登录,可访问http://lib.iteye.com/blog/166619进行查看,该博主写的很不错,我就是参照他的帖子来做的。