asp.net中添加管理员登陆按钮

asp.net中添加管理员登陆按钮,第1张

主要思想:Forms身份验证用来判断是否合法用户,当用户合法后,再通过用户的角色决定能访问的页面

具体步骤:

1、创建一个网站,结构如下:

网站根目录

Admin目录 ---->管理员目录

Manager.aspx ---->管理员可以访问的页面

Users目录 ---->注册用户目录

Welcome.aspx ---->注册用户可以访问的页面

Error目录 ---->错误提示目录

AccessError.htm ---->访问错误的提示页面

default.aspx ---->网站默认页面

login.aspx ---->网站登录页面

web.config ---->网站配置文件

2、配置web.config如下:

复制代码 代码如下:

<configuration>

<system.web>

<!--设置Forms身份验证-->

<authentication mode="Forms">

<forms loginUrl="Login.aspx" name="MyWebApp.APSXAUTH" path="/" protection="All" timeout="30"/>

</authentication>

<authorization>

<allow users="*"/>

</authorization>

</system.web>

</configuration>

<!--设置Admin目录的访问权限-->

<location path="Admin">

<system.web>

<authorization>

<allow roles="Admin"/>

<deny users="?"/>

</authorization>

</system.web>

</location>

<!--设置Users目录的访问权限-->

<location path="Users">

<system.web>

<authorization>

<allow roles="User"/>

<deny users="?"/>

</authorization>

</system.web>

</location>

3、在login.aspx页面的登录部分代码如下:

复制代码 代码如下:

protected void btnLogin_Click(object sender, EventArgs e)

{

//Forms身份验证初始化

FormsAuthentication.Initialize()

//验证用户输入并得到登录用户,txtName是用户名称,txtPassword是登录密码

UserModel um = ValidUser(txtName.Text.Trim(),txtPassword.Text.Trim())

if (um != null)

{

//创建身份验证票据

FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1,

um.Name,

DateTime.Now,

DateTime.Now.AddMinutes(30),

true,

um.Roles,//用户所属的角色字符串

FormsAuthentication.FormsCookiePath)

//加密身份验证票据

string hash = FormsAuthentication.Encrypt(ticket)

//创建要发送到客户端的cookie

HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, hash)

if (ticket.IsPersistent)

{

cookie.Expires = ticket.Expiration

}

//把准备好的cookie加入到响应流中

Response.Cookies.Add(cookie)

//转发到请求的页面

Response.Redirect(FormsAuthentication.GetRedirectUrl(um.Name,false))

}

else

{

ClientScriptManager csm = this.Page.ClientScript

csm.RegisterStartupScript(this.GetType(), "error_tip", "alert('用户名或密码错误!身份验证失败!')", true)

}

}

//验证用户

private UserModel ValidUser(string name, string password)

{

return new UserService().Validate(name, password)

}

4、给网站添加处理程序Global.asax,其中通用身份验证代码如下:

复制代码 代码如下:

//改造原来的User,给其添加一个用户所属的角色数据

protected void Application_AuthenticateRequest(object sender, EventArgs e)

{

if (HttpContext.Current.User != null )

{

if (HttpContext.Current.User.Identity.IsAuthenticated)

{

if (HttpContext.Current.User.Identity is FormsIdentity)

{

FormsIdentity id = (FormsIdentity)HttpContext.Current.User.Identity

FormsAuthenticationTicket ticket = id.Ticket

string userData = ticket.UserData

string[] roles = userData.Split(',')

//重建HttpContext.Current.User,加入用户拥有的角色数组

HttpContext.Current.User = new GenericPrincipal(id, roles)

}

}

}

}

5、在Admin目录中Manager.aspx页面加载代码如下:

复制代码 代码如下:

protected void Page_Load(object sender, EventArgs e)

{

//判断通过身份验证的用户是否有权限访问本页面

FormsIdentity id = (FormsIdentity)HttpContext.Current.User.Identity

//判断通过身份验证的用户是否是Admin角色

if (!id.Ticket.UserData.Contains("Admin"))

{

//跳转到访问权限不够的错误提示页面

Response.Redirect("~/Error/AccessError.htm", true)

}

}

//安全退出按钮的代码

protected void btnExit_Click(object sender, EventArgs e)

{

//注销票据

FormsAuthentication.SignOut()

ClientScriptManager csm = this.Page.ClientScript

csm.RegisterStartupScript(this.GetType(), "exit_tip", "alert('您已经安全退出了!')", true)

}

6、在Users目录中Welcome.aspx页面加载代码如下:

复制代码 代码如下:

protected void Page_Load(object sender, EventArgs e)

{

//判断通过身份验证的用户是否有权限访问本页面

FormsIdentity id = (FormsIdentity)HttpContext.Current.User.Identity

//判断通过身份验证的用户是否是User角色

if (!id.Ticket.UserData.Contains("User"))

{

//跳转到访问权限不够的错误提示页面

Response.Redirect("~/Error/AccessError.htm", true)

}

}

//安全退出按钮的代码

protected void btnExit_Click(object sender, EventArgs e)

{

//注销票据

FormsAuthentication.SignOut()

ClientScriptManager csm = this.Page.ClientScript

csm.RegisterStartupScript(this.GetType(), "exit_tip", "alert('您已经安全退出了!')", true)

}

测试结果:

数据:

假设有3个用户,如下:

------------------------------------------

用户名 密码 角色字符串

------------------------------------------

sa sa Admin,User

admin admin Admin

user user User

------------------------------------------

测试:

如果使用admin登录,只能访问Admin目录的Manager.aspx页面;

如果使用user登录,只能访问Users目录的Welcome.aspx页面;

使用sa登录,既能访问Admin目录的Manager.aspx页面,又能访问Users目录的Welcome.aspx页面。

注意:测试时注意及时点击安全退出按钮,否则影响测试结果。

三种方法:

1.选中注册这个按钮直接用鼠标双击会自动生成click事件

2.在后缀名为.aspx的文件中选中注册这个按钮,在源代码中添加onclick="btn_Click",然后在对应的.aspx.cs文件中添加protected void btn_Click(object sender, EventArgs e)这应就可以了

3.还有一种方法是直接在.aspx.cs文件中注册事件使用+=,这种方法除非是要求后台代码非常规范、整洁时我会使用,一般我是不用的


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11785894.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-18
下一篇2023-05-18

发表评论

登录后才能评论

评论列表(0条)

    保存