ASP.NET MVC 中实现基于角色的权限控制的处理方法
程序员文章站
2024-03-02 20:19:34
[authorize]public actionresult index()
标记的方式,可以实现所标记的action必须是认证用户才能访问;
通过使用
[autho...
[authorize]
public actionresult index()
标记的方式,可以实现所标记的action必须是认证用户才能访问;
通过使用
[authorize(users="username")]
的方式,可以实现所标记的action必须是某个具体的用户才能访问,以上两种方式使用起来非常方便,在needdinner示例程序中已有具休的实现过程,
但是,我们在实际的应用中所使用的大都是基于角色(roles)的认证方式,needdinner中却未给出,本文给出具体实现(基于asp.net forms验证)过程:
step 1
在完成username和password认证后,向客户端写入认证cookie
代码
复制代码 代码如下:
formsauthenticationticket authticket = new formsauthenticationticket(
1,
username,
datetime.now,
datetime.now.addminutes(20),
false,
"admin"//写入用户角色
);
string encryptedticket = formsauthentication.encrypt(authticket);
system.web.httpcookie authcookie = new system.web.httpcookie(formsauthentication.formscookiename, encryptedticket);
system.web.httpcontext.current.response.cookies.add(authcookie);
step 2
在global.asax.cs文件中加入以下代码,用于在用户登陆网站时读取cookie
代码
复制代码 代码如下:
protected void application_authenticaterequest(object sender, eventargs e)
{
httpcookie authcookie = context.request.cookies[formsauthentication.formscookiename];
if (authcookie == null || authcookie.value == "")
{
return;
}
formsauthenticationticket authticket = null;
try
{
authticket = formsauthentication.decrypt(authcookie.value);
}
catch
{
return;
}
string[] roles = authticket.userdata.split(new char[] { ';' });
if (context.user != null)
{
context.user = new system.security.principal.genericprincipal(context.user.identity, roles);
}
}
step 3
这样以来,就可以使用实现以下效果
复制代码 代码如下:
[authorize(roles="admin")]
public actionresult index(int ? page)
下一篇: python连接数据库的方法
推荐阅读
-
ASP.NET MVC 中实现基于角色的权限控制的处理方法
-
ASP.NET MVC使用ActionFilterAttribute实现权限限制的方法(附demo源码下载)
-
ASP.NET MVC使用ActionFilterAttribute实现权限限制的方法(附demo源码下载)
-
ASP.NET在MVC控制器中获取Form表单值的方法
-
Asp.net MVC中获取控制器的名称的方法
-
ASP.NET实现MVC中获取当前URL、controller及action的方法
-
ASP.NET在MVC控制器中获取Form表单值的方法
-
JavaScript控制输入框中只能输入中文、数字和英文的方法【基于正则实现】
-
vue中如何实现后台管理系统的权限控制的方法示例
-
如何在Asp.Net Core MVC中处理null值的实现