我之前从未真正实现过注册/登录系统,因此我正在尝试在C#/ ASP.NET中创建自己的系统(不使用ASP.NET的内置成员资格提供程序)。我有点不清楚的是如何利用Session / cookies来保持用户在会话期间和会话之间登录。
protected void Login_User(object sender, EventArgs e)
{
string username = usernameField.Text;
string password = passwordField.Text;
User user = UserRepository.FindUser(username);
if (user != null)
{
if (user.Password.Equals(Hash(password)))
{
// How do I properly login the user and keep track of his session?
}
else
Response.Write("Wrong password!");
}
else
Response.Write("User does not exist!");
}
答案 0 :(得分:0)
您可以使用RedirectFromLogin重定向到用户请求但由于身份验证而无法访问的页面,或者如果您想要控制用户重定向到的位置,可以使用SetAuthCookie < / p>
答案 1 :(得分:0)
对于正确的登录系统而言非常复杂。
使用HttpContext.Current.User的好处是你可以标记方法属性。
[Authorize] // authorized user only
public void btn_click(...){...}
我不确定普通的asp.net,但它在asp MVC中运行得很好
如果你想使用cookies,请尝试使用System.Web.Securitiy.FormsAuthenticationTicket和FormsAuthentication
样品
public class WebUser:System.Security.Principal.IPrincipal
{
...
public System.Security.Principal.IIdentity Identity{get; private set;}
public WebUser(...)
{
this.Identity = new WebIdentity(...);
HttpContext.Current.User = this;
}
}
public class WebIdentity : System.Security.Principal.IIdentity
{
...
}
public void Login(...)
{
var newUser = new WebUser(...);
}
答案 2 :(得分:0)
使用此:
public class FormsAuthenticationService
{
public void SignIn(string userName, bool createPersistentCookie)
{
if (String.IsNullOrEmpty(userName)) throw new ArgumentException("Value cannot be null or empty.", "userName");
FormsAuthentication.SetAuthCookie(userName, createPersistentCookie);
}
public void SignOut()
{
FormsAuthentication.SignOut();
}
}