我有一个遗留的ASP.NET webforms应用程序,用户通过服务器端处理的表单登录。如果输入的用户名+密码与数据库中的凭据匹配,我会在会话中设置一些值(例如,当前用户ID),然后执行Response.Redirect
。我还为#34创建了一个HttpCookie;我下次访问时会自动重新启动。功能。
目前,我还在该Web应用程序中添加了WebApi支持。我设法实现了令牌身份验证,允许我在客户端登录。
如何结合两种身份验证方法?我希望用户输入一次凭据,在服务器端进行身份验证,在客户端进行身份验证后将用户重定向到另一个页面。
答案 0 :(得分:0)
以下代码将创建一个cookie以保持用户登录。
// login etc
if (chkRemember.Checked)
{
// calculate the total number of minutes in 20 days to use as the time out.
int timeout = (int)TimeSpan.FromDays(30).TotalMinutes;
// create an authentication ticket
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(txtUserName.Text, true, timeout);
// Encrypt the ticket
string encrptedTicked = FormsAuthentication.Encrypt(ticket);
// create the cookie for the ticket, and put the ticket inside
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encrptedTicked);
// give cookie and ticket same expiration
cookie.Expires = ticket.Expiration;
// Attach cookie to current response. it will now to the client and then back to the webserver with every request
HttpContext.Current.Response.Cookies.Set(cookie);
// send the user to the originally requested page.
string requestedPage = FormsAuthentication.GetRedirectUrl(txtUserName.Text, false);
Response.Redirect(requestedPage, true);
}
else
{
// login without saving cookie to client
FormsAuthentication.RedirectFromLoginPage(txtUserName.Text, false);
}
答案 1 :(得分:-1)
您可以使用Angular JS在webapi中使用基于令牌的身份验证。访问以下链接 http://www.dotnetcurry.com/aspnet/1223/secure-aspnet-web-api-using-tokens-owin-angularjs