C# 基于 cookie 的授权

标签 c# jquery cookies authorization

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

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

最佳答案

我怀疑您是在重新发明轮子。您不必使用 Membership Provider 和 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");

关于C# 基于 cookie 的授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6415947/

相关文章:

c# - 如何访问 .aspx 页面中的 C# 变量值并在 String.Concat 方法中使用它?

C# 可以将对象附加到方法调用而不将其作为参数吗?

php - 是否可以在加载之前刷新页面?

angular - Spring Security OAuth2 在 cookie 中存储 access_token

jQuery/Javascript : populate div with data written by a script than store the div's value into a cookie

c# - 圆和线段相交检测(Lat Lon Point、Meter Radius 和 Lat Long Line)

c# - 有没有办法在 Selenium 的 C# 端口中使用 WebDriverWait 的 FindsBy 注释?

javascript - 如何使用 eclipse-mars IDE 将 jquery 插件设置到我的 codeigniter 项目中

jquery - 单击时删除类并添加到另一个元素

javascript - 存储/检索 html 5 文件对象以恢复损坏的文件上传