我希望有人可以告知以下情况是否可以接受,如果没有,我有什么其他方式可以解决这个问题。
我使用表单身份验证开发了一个ASP .Net站点,使用我们自己的数据库(SQL)模型进行身份验证。多个用户可以登录。需要考虑的一点是每个用户都无法访问其他用户的记录。
在代码中,我在页面加载时有一个User对象,它加载了登录用户的详细信息。
当他们访问记录时,我有一个超链接,其中包含传递的记录的ID,该超链接被重定向到用户可以查看完整记录的详细信息页面。
现在在详细信息页面上,我再次加载当前用户的详细信息,然后使用一些SQL来通过用户登录ID获取记录和传入的记录的ID。
到目前为止,这已经成功,因为我已经登录了访问自己记录的用户1 - 复制URL并将其粘贴到不同的浏览器中,该浏览器将用户重定向到登录页面。这次我使用用户2登录。页面显示但没有详细信息。
这听起来不错还是我需要做的其他事情?当然,如果没有返回详细信息,我将实现重定向到“拒绝访问”页面,而不是显示空白页面。
如果您有任何问题,请随时提出。
答案 0 :(得分:0)
一切听起来都不错 - 虽然我会选择更细粒度的东西:允许在访问控制列表的基础上访问其他人的记录,但这更复杂。
我在你写的内容中唯一改变的是对访问被拒绝页面的“重定向”。 从不对错误页面执行重定向 - 而是在原始响应中返回错误消息。您可以使用Server.Transfer
在ASP.NET WebForms中执行此操作,或者通过清除响应缓冲区(如果需要)并使用正确的消息将页面内容设置为ASCX。不要忘记将HTTP状态设置为403。