我正在使用jquery cookies为我的页面实现C#授权。我在cookie和管理页面中设置/加密用户名和密码,如果我识别cookie,则用户被授权。如果没有,他将被重定向到登录页面。问题是,在页面加载后读取cookie,所以我可以手动点击管理页面,只有几秒钟它才会被重定向。如何阻止没有cookie的访问者加载管理页面?什么是基于cookie的授权的正确架构?
注意:我没有使用ASP.NET角色或用户表。我为用户实现了自己的表格。
答案 0 :(得分:3)
我怀疑你正在重新发明轮子。您不必使用成员资格提供程序和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");
答案 1 :(得分:1)
问题是,您使用客户端代码进行安全检查。如果有人完全禁用JavaScript,他将永远不会被重定向。将支票移至服务器端代码。