基于C#cookie的授权

时间:2011-06-20 18:50:54

标签: c# jquery cookies authorization

我正在使用jquery cookies为我的页面实现C#授权。我在cookie和管理页面中设置/加密用户名和密码,如果我识别cookie,则用户被授权。如果没有,他将被重定向到登录页面。问题是,在页面加载后读取cookie,所以我可以手动点击管理页面,只有几秒钟它才会被重定向。如何阻止没有cookie的访问者加载管理页面?什么是基于cookie的授权的正确架构?

注意:我没有使用ASP.NET角色或用户表。我为用户实现了自己的表格。

2 个答案:

答案 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,他将永远不会被重定向。将支票移至服务器端代码。