C# 表单登录后的身份验证
好的,我有一个简单的场景: 共有两页: 登录和欢迎页面。 我在自己的表中使用FormsAuthentication,该表有四列:ID、用户名、密码、全名 按login时,im设置我的用户名,如: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.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工作进程回收时将丢失,但是您可以将其配置为使用状态服务,该服务将会话信息保留在单独的进程中:
另一个选择是使用配置文件。由于听起来您已经在自己的表中存储了“配置文件”信息,因此您可能必须为其编写一个自定义提供程序,因此这是一个更复杂的解决方案。很抱歉,我来晚了一点,但下面介绍如何在不将值存储到其他任何地方的情况下执行此操作:)
很抱歉,我来晚了一点,但下面介绍如何在不将值存储到其他任何位置的情况下执行此操作:)