ASP.NET的Forms身份验证在极少数浏览器下,设立cooikes成功后却丢失
ASP.NET的Forms身份验证在极少数浏览器下,设置cooikes成功后却丢失
记得毕业后刚在一家小公司参加工作时,看到的登录功能(指用户名密码校验成功后的设置cookies和session动作)是将用户名记录在cookies中以便下次再次登录和将用户信息如角色、权限存在session中,当业务中需要用到当前登录信息时,则从session中取出来转化成用户登录信息类实例。
后来随着工作经验增长,对以上事件有2个不适应。
第一,出于轻微强迫症原因,不喜欢写“存session["UserInfo_admin"]”然后取出来这种动作,在我看来,这不应该暴露出来。
第二,每次需要用到当前登录信息时,都需要将session转换成登录信息类实例,太频繁,“转化动作”太浪费。
在后来的新工作中,我选择了ASP.NET的Forms身份验证来完成登录身份验证功能。
首先我觉得这样写比较专业,其次是偏信微软。
用了挺长时间,现在遇见问题,很不解,搜索很久没得到结果,发出来请大家看看。

我在登录时,设置了2个cookies。forms身份验证的cookies和登录名的cookies。

在登录后,成功设置2个cookies之后,加了以上测试代码。第一次检测。

在global中,加了以上测试代码。第二次检测。

在重新设置用户标识对象方法中,加了以上测试代码。第三、四次检测。

在action权限验证特性类中,我加了以上测试代码。第五次检测。
完整的登录测试流程是:
登录帐号密码校验完成 => 设置2个cookies => 第一次检测 => global中第二次检测 => 在global中调用的TrySet方法中首尾分别是第三次检测和第四次检测 => 执行action之前的第五次检测。
登录后,查看日志表数据,结果如下。

这是在PC端浏览器登录的记录结果,属于正常数据。按次序的1-5检测都能获取到2个cookies的value。

这是在“手机端,安卓,4.0,默认浏览器”登录的记录结果。很明显,登录后的第一次检测拿到了2个cookies,然后紧接着第二次检测时,form身份验证的cookies就null了,直接导致了第三、四次检测不执行,跳到第五次检测,form身份验证的cookies当然也是null了。
这个“无法获取到forms身份验证的cookies”的问题,除了在“手机端,安卓,4.0,默认浏览器”中测试发现之外,还在极少数IE浏览器中出现。
只剩31分了,请大家帮助一下,发帖不容易啊~~
最后,也顺便请教一下前辈高手,登录这种直接涉及安全的功能,选择用Forms身份验证是否合理呢?在同事看来,复杂得要死,还不如自己用cookies手动设置和读取。
哎,强迫症默默叹气。
------解决方案--------------------
楼主可以加上这么一句
记得毕业后刚在一家小公司参加工作时,看到的登录功能(指用户名密码校验成功后的设置cookies和session动作)是将用户名记录在cookies中以便下次再次登录和将用户信息如角色、权限存在session中,当业务中需要用到当前登录信息时,则从session中取出来转化成用户登录信息类实例。
后来随着工作经验增长,对以上事件有2个不适应。
第一,出于轻微强迫症原因,不喜欢写“存session["UserInfo_admin"]”然后取出来这种动作,在我看来,这不应该暴露出来。
第二,每次需要用到当前登录信息时,都需要将session转换成登录信息类实例,太频繁,“转化动作”太浪费。
在后来的新工作中,我选择了ASP.NET的Forms身份验证来完成登录身份验证功能。
首先我觉得这样写比较专业,其次是偏信微软。
用了挺长时间,现在遇见问题,很不解,搜索很久没得到结果,发出来请大家看看。
我在登录时,设置了2个cookies。forms身份验证的cookies和登录名的cookies。
在登录后,成功设置2个cookies之后,加了以上测试代码。第一次检测。
在global中,加了以上测试代码。第二次检测。
在重新设置用户标识对象方法中,加了以上测试代码。第三、四次检测。
在action权限验证特性类中,我加了以上测试代码。第五次检测。
完整的登录测试流程是:
登录帐号密码校验完成 => 设置2个cookies => 第一次检测 => global中第二次检测 => 在global中调用的TrySet方法中首尾分别是第三次检测和第四次检测 => 执行action之前的第五次检测。
登录后,查看日志表数据,结果如下。
这是在PC端浏览器登录的记录结果,属于正常数据。按次序的1-5检测都能获取到2个cookies的value。
这是在“手机端,安卓,4.0,默认浏览器”登录的记录结果。很明显,登录后的第一次检测拿到了2个cookies,然后紧接着第二次检测时,form身份验证的cookies就null了,直接导致了第三、四次检测不执行,跳到第五次检测,form身份验证的cookies当然也是null了。
这个“无法获取到forms身份验证的cookies”的问题,除了在“手机端,安卓,4.0,默认浏览器”中测试发现之外,还在极少数IE浏览器中出现。
只剩31分了,请大家帮助一下,发帖不容易啊~~
最后,也顺便请教一下前辈高手,登录这种直接涉及安全的功能,选择用Forms身份验证是否合理呢?在同事看来,复杂得要死,还不如自己用cookies手动设置和读取。
哎,强迫症默默叹气。
------解决方案--------------------
楼主可以加上这么一句