基于C#Cookie的授权
我正在为我的页面使用jQuery Cookie实现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");
问题是,您使用客户端代码进行安全检查。 如果有人会完全禁用JavaScript,他将永远不会被重定向。 将支票移动到您的服务器端代码。
链接地址: http://www.djcxy.com/p/15963.html