Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用asp.net-mvc创建基本用户登录?_C#_Asp.net Mvc_Forms Authentication - Fatal编程技术网

C# 如何使用asp.net-mvc创建基本用户登录?

C# 如何使用asp.net-mvc创建基本用户登录?,c#,asp.net-mvc,forms-authentication,C#,Asp.net Mvc,Forms Authentication,我将使用LINQ在Entity/MVC框架上使用C#和asp.net从头开始构建它 我们选择不使用内置的成员身份授权 我想弄清楚的是,我是否把所有的基础都覆盖了,或者我是否忘记了什么。或者如果我把事情复杂化了 以下是我的设想 我创建了一个表,其中包含用户信息、用户名和密码。将其移动到我的代码中的模型 我在代码中创建了一个身份验证服务。然后,当他们登录时,我将时间添加到他们登录的表中,然后在每次页面访问时,我检查该时间,如果已过30分钟,我将其注销并将其放回登录页面,否则我将其带到他们请求的页面

我将使用LINQ在Entity/MVC框架上使用C#和asp.net从头开始构建它

我们选择不使用内置的成员身份授权

我想弄清楚的是,我是否把所有的基础都覆盖了,或者我是否忘记了什么。或者如果我把事情复杂化了

以下是我的设想


我创建了一个表,其中包含用户信息、用户名和密码。将其移动到我的代码中的模型

我在代码中创建了一个身份验证服务。然后,当他们登录时,我将时间添加到他们登录的表中,然后在每次页面访问时,我检查该时间,如果已过30分钟,我将其注销并将其放回登录页面,否则我将其带到他们请求的页面

这样做行吗?我真的需要向每个页面控制器添加身份验证检查吗

基本上是这样<代码>服务.身份验证.验证登录()


如果30分钟过去了,将其注销,将表LoggedIn更新为false。如果在30分钟内。将LoggedInTime更新为当前时间。

如果您使用的是MVC,则不必“向每个页面控制器添加身份验证检查”,只需在控制器中需要身份验证的操作上方添加[Authorize]属性即可

下面是一个可能会帮助您的授权示例:

我认为您想要的是使用MVC身份验证cookie,而不是检查数据库的登录时间:

// sign in
FormsAuthentication.SetAuthCookie(username, false);
// sign out
FormsAuthentication.SignOut();
参考文献

参考文献

另外,这是一篇关于MVC4中自定义身份验证的好文章:


您如何存储密码?纯文本?不,我会以某种方式将其散列。所以每次他们访问页面时,你都会更新数据库中的时间?因此,如果他们在一个页面上停留超过30分钟,他们将被注销?“包含用户信息、用户名、密码的表”失败。我会逃避某些类型的任务。这是其中之一。只需使用现有的会员资格。把这些东西做好真的很难。不要低估你为自己设定的任务。尽一切努力使用现有的、经过测试的框架。您自己的滚动几乎肯定会出错。@spender感谢spender的建议,但让我们关注实际问题,即我不会使用内置会员资格。作为补充说明,如果不在数据库中,我会将密码存储在哪里?谢谢!我希望我必须为每个控制器都这样做。你也可以在类级别上添加它。