gpt4 book ai didi

ASP.NET MVC 对不存在的用户进行身份验证和授权

转载 作者:行者123 更新时间:2023-12-02 16:06:49 24 4
gpt4 key购买 nike

我正在使用 DropCreateDatabaseAlways 初始化程序,因此每次启动应用程序时我的数据库都会被破坏(至少我希望如此)。有趣的是,我仍然看到自己处于登录状态。我通过了 Authorize 属性,可以做危险的事情。这可能是因为之前测试留下的 cookie。

我的应用程序的注册/登录部分是未受影响的 MVC 4 Internet 应用程序模板。 ASP.NET 不应该根据数据库中保存的用户检查 cookie 值吗? WebSecurity.IsAuthenticated 返回 true,WebSecurity.CurrentUserName 返回名称。唯一按预期工作的是 WebSecurity.CurrentUserId,它返回 -1。我是新手,所以我只能猜测这是因为 UserId 未存储在 cookie 中,必须从数据库中检索。

我说得对吗?如果是这样,是否意味着我应该始终使用 WebSecurity.CurrentUserId 来确定用户是否已登录?在这种情况下,WebSecurity.IsAuthenticatedUser.Identity.IsAuthenticated 似乎毫无用处。我可以删除用户的帐户,而他或她不受影响。如果我错了,应该采取什么不同的做法?

最佳答案

如果您想真正检查用户是否未被删除,您只需必须查阅数据库即可。

请注意,用户和管理员同时工作。这意味着用户在通过身份验证后一秒钟就可以被删除。 cookie 甚至可能只有一两秒的历史(!),并且用户可能已经被删除了。

在最悲观的情况下,用户输入有效的用户名和密码并成功登录,并在一个请求后收到“抱歉,您的帐户已被删除”(因为该帐户实际上刚刚被删除)。

关于ASP.NET MVC 对不存在的用户进行身份验证和授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16001541/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com