我正在使用jquery cookies为我的页面实现C#授权.我在cookie和管理页面中设置/加密用户名和密码,如果我识别cookie,则用户被授权.如果没有,他将被重定向到登录页面.问题是,在页面加载后读取cookie,所以我可以手动点击管理页面,只有几秒钟它才会被重定向.如何阻止没有cookie的访问者加载管理页面?什么是基于cookie的授权的正确架构?
注意:我没有使用ASP.NET角色或用户表.我为用户实现了自己的表.
解决方法:
我怀疑你是在重新发明*.您不必使用成员资格提供程序和ASP.Net成员资格模式来利用表单身份验证.当用户登录时,只需将Auth Ticket(cookie)放在他们身上就可以了.然后,您只需在管理页面上执行管理员检查即可.
以下一些建议……
编辑:我最初发布了一种通过UserData在Auth Ticket中存储角色的方法,但我认为这种情况有点过分.
Web.config文件:
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="30" slidingExpiration="true" />
</authentication>
. . .
<membership>
<providers>
<clear />
</providers>
</membership>
登录后:
当用户提交用户名和密码时,验证它们并检查它们是否是管理员:
if (UserIsValid(username, pwd)) // some validation call
{
FormsAuthentication.SetAuthCookie(username, true);
}
Admin.aspx:
最后,快速入侵以限制对管理页面的访问.页面加载时,检查用户是否是管理员:
if (!IsAdmin(User.Identity.Name)) // some admin call
Response.Redirect("Default.aspx");