Asp.net mvc 每次执行的MVC默认代码

Asp.net mvc 每次执行的MVC默认代码,asp.net-mvc,asp.net-mvc-3,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 3,Asp.net Mvc 4,我想根据角色设置菜单。我制作了一个模型来检查我的角色,并在此基础上构建了我的菜单 我有不同的控制器和动作,例如: /ProjectTest/Reports/Projects /ProjectTest/Admin/Client /ProjectTest/Admin/Resource /ProjectTest/portfolio/Schedule 我如何确保当用户键入上述任何url时,它会点击我的模型以检查角色?您可以做的一件事是创建一个共享布局页面,供所有“基于菜单”的页面使用。此共享页面可以是

我想根据角色设置菜单。我制作了一个模型来检查我的角色,并在此基础上构建了我的菜单

我有不同的控制器和动作,例如:

/ProjectTest/Reports/Projects
/ProjectTest/Admin/Client
/ProjectTest/Admin/Resource
/ProjectTest/portfolio/Schedule

我如何确保当用户键入上述任何url时,它会点击我的模型以检查角色?

您可以做的一件事是创建一个共享布局页面,供所有“基于菜单”的页面使用。此共享页面可以是针对您的角色模型的强类型,这将允许您在加载页面内容之前检查用户是谁以及他们的权限是什么


我不知道你的模型是如何处理角色的,但从那里你可以把一些东西塞进视图包,生成一些笨拙的html等等,这样你的页面就知道要加载什么菜单了。

你可以做的一件事就是创建一个共享的布局页面,供所有“基于菜单”的页面使用。此共享页面可以是针对您的角色模型的强类型,这将允许您在加载页面内容之前检查用户是谁以及他们的权限是什么

我不知道你的模型是如何处理角色的,但是从那里你可以把一些东西塞进视图包,生成一些笨拙的html等等,这样你的页面就知道要加载什么菜单了。

实现你自己的,然后用
authorized属性装饰你的动作

如果您创建一个从
RoleProvider
继承的类,并且只为
string[]GetRolesForUser(string username)
提供一个实际的实现,这就足够了。您的实现应该检查您的模型,找出用户所处的“角色”,并将其作为字符串数组返回

e、 g

然后,您要将任何操作或控制器限制为指定角色中的用户,您可以使用
authorized属性
进行修饰

e、 g

实现您自己的操作,然后使用
authorized属性
装饰您的操作

如果您创建一个从
RoleProvider
继承的类,并且只为
string[]GetRolesForUser(string username)
提供一个实际的实现,这就足够了。您的实现应该检查您的模型,找出用户所处的“角色”,并将其作为字符串数组返回

e、 g

然后,您要将任何操作或控制器限制为指定角色中的用户,您可以使用
authorized属性
进行修饰

e、 g


创建您自己的
AuthorizeAttribute
?创建您自己的
AuthorizeAttribute
?A)他为什么需要自定义角色提供者?标准角色提供程序工作正常。他没有提到任何需要编写自己的提供者的内容。B) 这些和在他的主页上创建菜单条目有什么关系?这是他的问题的焦点?我不是这样理解他的问题的。“我如何确保当用户键入上述任何url时,它会点击我的模型以检查角色?”-在我看来,他是在询问基于角色的授权。A)为什么他需要自定义角色提供程序?标准角色提供程序工作正常。他没有提到任何需要编写自己的提供者的内容。B) 这些和在他的主页上创建菜单条目有什么关系?这是他的问题的焦点?我不是这样理解他的问题的。“我如何确保当用户键入上述任何url时,它会点击我的模型以检查角色?”——在我看来,他是在询问基于角色的授权。
public override string[] GetRolesForUser(string username)
{
    // if model says user is in Admin and ReportViewer roles
    return new[] {"Admin", "ReportViewer"};
    // else return other roles
    return new[] { "User" };
}
[Authorize("Admin")]
public class AdminController 
{
     ... etc...

public class ReportController {

    [Authorize("ReportViewer"]
    public ActionResult Client()
    {
    ...etc...