基于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

上一篇: C# cookie based authorization

下一篇: Is URL Authorization enough secure in ASP.NET?