我有一个用户可以登录的登录页面。当他们使用正确的详细信息登录时,会将其发送到主管理页面。如果他们无法登录,他们将停留在登录页面上。我想要做的是,如果是随机用户,当他们未登录时键入管理页面的URL,他们将重定向到登录页面。
我明白我必须在masterpage或webconfig中执行此操作!?!我有一个主管理页面和一些其他管理页面。
任何提示?
我尝试将其插入到我的webconfig中:
<authentication mode="Forms">
<forms loginUrl="InnUtlogging.aspx" timeout="2880"/>
</authentication>
这是我的“登录”按钮的代码(在登录页面上);
protected void Button1_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True");
con.Open();
SqlCommand cmd = new SqlCommand("select * FROM Ansatt WHERE epost='" + brukernavn.Text + "' and passord='" + passord.Text + "'");
cmd.Connection = con;
int OBJ = Convert.ToInt32(cmd.ExecuteScalar());
if (OBJ > 0)
{
Session["name"] = brukernavn.Text;
Response.Redirect("KunstnerAdmin.aspx");
}
else
{
melding.Text = "Feil brukernavn/passord";
}
if (brukernavn.Text == "")
{
melding.Text = "Du må fylle inn brukernavn";
}
if (passord.Text == "")
{
melding.Text = "Du må fylle inn passord";
}
}
“登录”页面上的代码适用于该页面,但实际上我想检查用户是否在主页面中登录。我可以在母版页中做些什么来激活表单身份验证吗?
答案 0 :(得分:1)
您的代码缺少 FormsAuthentication 的大量内容。
首先,代码很容易出现 SQL Injection attack 。您想考虑使用 参数化查询 。
protected void Button1_Click(object sender, EventArgs e)
{
// After validation successful
bool rememberMe = false; // Make it false for now
FormsAuthentication.RedirectFromLoginPage(brukernavn.Text, rememberMe);
}
您需要这样才能从cookie中检索用户名,并将其保存在IPrincipal对象中。
public class Global : HttpApplication
{
private void Application_AuthenticateRequest(object sender, EventArgs e)
{
HttpCookie decryptedCookie =
Context.Request.Cookies[FormsAuthentication.FormsCookieName];
FormsAuthenticationTicket ticket =
FormsAuthentication.Decrypt(decryptedCookie.Value);
var identity = new GenericIdentity(ticket.Name);
var principal = new GenericPrincipal(identity, null);
HttpContext.Current.User = principal;
Thread.CurrentPrincipal = HttpContext.Current.User;
}
}
<authentication mode="Forms">
<forms loginUrl="~/InnUtlogging.aspx" />
</authentication>
protected void Page_Load(object sender, EventArgs e)
{
if (User.Identity.IsAuthenticated)
{
string username = User.Identity.Name;
}
}
答案 1 :(得分:0)
以下是检查用户是否经过身份验证的方法。
HttpContext.Current.User.Identity.IsAuthenticated