Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.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# 表单登录后的身份验证_C#_Asp.net_Asp.net Mvc - Fatal编程技术网

C# 表单登录后的身份验证

C# 表单登录后的身份验证,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,好的,我有一个简单的场景: 共有两页: 登录和欢迎页面。 我在自己的表中使用FormsAuthentication,该表有四列:ID、用户名、密码、全名 按login时,im设置我的用户名,如: FormsAuthentication.SetAuthCookie(userName, rememberMe ?? false); 在欢迎页面上,我无法使用: Page.User.Identity.Name 要向用户提供当前登录的用户,但我不喜欢网站中的所有示例中的用户用户名,我希望使用全名字段 我

好的,我有一个简单的场景:

共有两页: 登录和欢迎页面。 我在自己的表中使用FormsAuthentication,该表有四列:ID、用户名、密码、全名

按login时,im设置我的用户名,如:

FormsAuthentication.SetAuthCookie(userName, rememberMe ?? false);
在欢迎页面上,我无法使用:

Page.User.Identity.Name
要向用户提供当前登录的用户,但我不喜欢网站中的所有示例中的用户用户名,我希望使用全名字段


我认为,当页面加载到疯狂的、不喜欢用户会话或简单的Cookie时,总是转到db并请求全名。FormsAuthentication提供程序对此有自定义字段。FormsAuthentication使用cookies工作。您可以构建自己的auth cookie并将全名放入其中,但我认为我会将其放入会话中。如果使用任何类型的cookie,每次都需要从中提取名称。将其绑定到会话似乎更自然,并且使您更容易访问。我同意每次返回DB都是一种浪费,我肯定会将值缓存到某个地方


可以找到有关构建自己的表单身份验证cookie的信息。

表单身份验证使用cookie工作。您可以构建自己的auth cookie并将全名放入其中,但我认为我会将其放入会话中。如果使用任何类型的cookie,每次都需要从中提取名称。将其绑定到会话似乎更自然,并且使您更容易访问。我同意每次返回DB都是一种浪费,我肯定会将值缓存到某个地方


可以找到有关构建自己的表单身份验证cookie的信息。

表单身份验证没有自定义字段。您只需使用会话即可。这就是它的存在,你知道别忘了,表单认证cookie和会话是两个独立的东西。他们甚至都有自己的暂停时间。因此,用户注销时不会重置会话,除非您自己这样做。

没有用于表单身份验证的自定义字段。您只需使用会话即可。这就是它的存在,你知道别忘了,表单认证cookie和会话是两个独立的东西。他们甚至都有自己的暂停时间。因此,当用户注销时,会话不会重置,除非您自己这样做。

在您调用FormsAuth后,我会将用户的全名存储在会话cookie中

FormsAuth.SetAuthCookie(userName, rememberme);

// get the full name (ex "John Doe") from the datbase here during login
string fullName = "John Doe";

Response.Cookies["FullName"].Value = fullName;
Response.Cookies["FullName"].expires = DateTime.Now.AddDays(30);
然后通过以下方式在查看页面中检索:

string fullName = HttpContext.Current.Request.Cookies["FullName"].Value

在您调用FormsAuth后,我会将用户的全名存储在会话cookie中

FormsAuth.SetAuthCookie(userName, rememberme);

// get the full name (ex "John Doe") from the datbase here during login
string fullName = "John Doe";

Response.Cookies["FullName"].Value = fullName;
Response.Cookies["FullName"].expires = DateTime.Now.AddDays(30);
然后通过以下方式在查看页面中检索:

string fullName = HttpContext.Current.Request.Cookies["FullName"].Value

使用配置文件与用户存储额外信息如何?

使用配置文件与用户存储额外信息如何?

最简单的选择是使用会话。默认情况下,会话状态存储在内存中,并且在ASP.NET工作进程回收时将丢失,但是您可以将其配置为使用状态服务,该服务将会话信息保留在单独的进程中:


另一个选择是使用配置文件。由于听起来您已经在自己的表中存储了“配置文件”信息,因此您可能必须为其编写一个自定义提供程序,因此这是一个更复杂的解决方案。

最简单的选择是使用会话。默认情况下,会话状态存储在内存中,并且在ASP.NET工作进程回收时将丢失,但是您可以将其配置为使用状态服务,该服务将会话信息保留在单独的进程中:


另一个选择是使用配置文件。由于听起来您已经在自己的表中存储了“配置文件”信息,因此您可能必须为其编写一个自定义提供程序,因此这是一个更复杂的解决方案。

很抱歉,我来晚了一点,但下面介绍如何在不将值存储到其他任何地方的情况下执行此操作:)


很抱歉,我来晚了一点,但下面介绍如何在不将值存储到其他任何位置的情况下执行此操作:)