我目前正在尝试在drupal中实现第二个(较低的)管理层.我已经通过同名模块为这些用户创建了一个额外的部分,因此他们可以拥有自己的主题等.我想给这些第二或更低的管理员一个菜单在他们可以访问某些管理功能的页面部分管理其他用户和某些类型的内容等.我遇到的最大问题是安全性不一致,例如第二个管理员可以使自己成为一个完整的管理员,因为我使用drupals自己的核心管理员功能,而无法弄清楚如何永久阻止某些功能但允许其他人.在这种情况下,我想让第二个管理员能够创建和更改低级别用户的角色,而不是他自己,但无法更改或创建真正的管理员.这只是问题的一部分,但是,较小的问题是我无法为第二个管理部分保留我的主题集,而不必复制现有的管理员视图(如用户和内容的那些)并将重复项设置为我的部分下的路径.有什么建议?
我有mvc应用程序,我正在使用poco对象和编写单元测试.问题是当我们到达这行代码Roles.IsUserInRole("someUser","role")时,我的所有测试都失败了.我应该为角色或......实现新的界面或存储库吗?谢谢
使用ASP.NET MVC 3(Razor)应用程序,主要关注UGC(用户生成的内容).
我正在开发一个"Q&A"区域 - 用户可以提问,其他人可以回答,投票等.
因此,我正在尝试找出一种干净的方法来处理用户可以根据其角色和其他因素在任何给定页面上执行的可用操作.
采用"问题详细信息页面"的方案(如Stack Overflow上的此页面).
任何(已验证的)用户都可以:
问题拥有者可以:
等等.
现在,我有一个QuestionViewModel
,用于显示此特定视图的问题和相关答案.
我使用AutoMapper创建它.
如何根据可用的操作在页面上显示"胶粘物"(例如超链接)?
我目前的想法是:
QuestionOperation
答案,编辑,禁用,投票,答案等)IEnumerable<QuestionOperation>
到我的ViewModelHtml.ActionLink
这被认为是一种干净的方法 - 或者任何人都可以提出更好的方法?
请记住,我QuestionViewModel
在三页上重复使用它:
因为这些操作依赖于页面/用户,所以使用AutoMapper无法实现.
我计划开始一个涉及用户注册的基于Web的项目,就像论坛/ CMS一样,但我的障碍是我不知道如何实现所谓的基于角色的访问控制.
我搜索了"基于角色的访问控制",我在结果书中找到了关于:Design Patters的信息.
这与我需要的有关吗?是否有关于实现这个想法的教程?是数据库端还是语言编程端的实现?
任何参考?任何头衔?
如何获取用户列表,包括每个用户的角色名称?我的应用程序具有MVC项目的默认表.
我能够使用Identity 2.1检索所有用户,如下所示:
模型
public class GetVendorViewModel
{
public IList<ApplicationUser> Vendors { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
调节器
public ActionResult Index()
{
var manager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext()));
var roleStore = new RoleStore<IdentityRole>(ac);
var roleManager = new RoleManager<IdentityRole>(roleStore);
var vendor = roleManager.FindByName("Vendor").Users;
var model = new GetVendorViewModel { Vendors = vendor };
return View("~/Views/User/Administrator/Vendor/Index.cshtml", model);
}
Run Code Online (Sandbox Code Playgroud)
现在回来了:
[
{
UserId: "4f9ed316-a852-45a9-93a8-a337a37b1c74",
RoleId: "a17bb59c-285a-43f9-b5ad-65f46f94bb4f"
}
]
Run Code Online (Sandbox Code Playgroud)
这是正确的,但我需要显示用户信息,如姓名,电子邮件,用户名等.
我想像这样返回一个json对象:
[
{
UserId: "4f9ed316-a852-45a9-93a8-a337a37b1c74",
RoleId: "a17bb59c-285a-43f9-b5ad-65f46f94bb4f"
RoleName: "Administrator"
User: {
name:"Joe Doe",
email:"jd@mail.com", …
Run Code Online (Sandbox Code Playgroud) 我有一个客户端有以下问题:
我需要能够将他们的WooCommerce WordPress网站分为两类.如果用户以a身份登录"Wholeseller"
,则只会从数据库中提取该"Wholesale"
类别中的产品.
但是,如果用户未登录或已登录但未登录"Wholeseller"
,则只会从数据库中删除没有该"Wholesale"
类别的产品.
我想我会在主题functions.php
文件中添加这样的东西:
add_filter("some_woocommerce_hook", "wholeseller_filter");
function wholeseller_filter() {
if (current_user->role == "Wholeseller"){
//omit products without "wholesale" category while browsing whole site
} else {
//omit products with "wholesale" in the category while browsing whole site.
}
}
Run Code Online (Sandbox Code Playgroud)
我浏览了StackOverflow,但是我还没找到我正在寻找的内容,或者非常清楚我应该使用哪些关键字进行搜索.
你能为我指出正确的方向吗?
我有 user_master 表、role_master 表和一个名为 user_roles 的子表,其中包含用户 id 和角色 id 的引用,指示哪个用户属于哪个角色。
我还有一张权限表,它指示哪些权限属于哪些角色。
例如:
用户主表:
id 用户_主密码
约翰一书 some_md5
2 简 some_md5
role_master 表:
id 角色名称
1 管理员
2 数据输入操作员
用户角色:
id 用户_id 角色_id
1 1 1
2 2 2
权限:
id 权限_名称 角色_id
1 内容.创建 1
2 内容.创建 2
3内容.删除1
在Laravel Passport 令牌范围文档中,提到我们可以在 中传递令牌范围AuthServiceProvider
。AuthServiceProvider
但在这种情况下,角色和权限范围是动态的,因此从数据库表加载它们是最佳实践吗?
在oauth/token
API 中,我们应该传递范围。但根据这个动态示例,我们不能将 * 作为范围传递,因为某些角色的可访问性有限,而某些角色可以访问所有内容。因此,一旦我们从网络/移动应用程序发送了用户名和密码POST
,那么我们如何传递范围,因为在oauth/token
触发之前,我们不会有用户角色和范围信息。
任何帮助真的很感激。谢谢!
我的应用程序遵循 DDD 架构。我有应用程序层、领域层和数据访问层(存储库)。假设我的应用程序中有 3 个角色:管理员、主管、代理机构。每个角色都应该访问分配给自己的数据。所以问题是,我应该放置查询逻辑以便按存储库中的角色过滤数据吗?
var query = dataContext.Order.Where(...);
if(userRole = "admin")
query =.... filter by admin
If(usrRole = "supervisor")
query =....
return query.ToList();
Run Code Online (Sandbox Code Playgroud)
我认为与业务逻辑相关的逻辑应该放在领域层。但这个我还没有搞清楚。你们能为我解决这个问题吗?
c# architecture domain-driven-design repository-design user-roles
作为我的"批准"流程的一部分,我希望管理员根据需要为用户分配不同的角色.
我想"分离"用户当前的角色并添加一个新角色.
$id = Input::get('submit');
$user = User::where('id','=', $id)->first();
$user->attachRole(2);
$user->save();
Run Code Online (Sandbox Code Playgroud)
上面的代码获取了我想要重新分配角色的用户ID,然后是分配了新角色的attachRole,但是我无法删除之前的代码.
但是,它不会删除用户之前分配给它的角色.
$user->detachRole(USER ID HERE);
Run Code Online (Sandbox Code Playgroud)
似乎不起作用.
唯一的问题是,如果它在'Role'表中,我可以使用$ user-> roles() - > delete(类似的东西),其中角色的用户分配在'assigned_roles'表中.
任何帮助将非常感激.
我试图允许我的组织中的一些用户将端口转发到 Kubernetes 中的生产命名空间。但是,我不希望他们能够将端口转发到所有服务。我想限制仅访问某些服务。这可能吗?
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: allow-port-forward-for-deployment-a
rules:
- apiGroups: [""]
resources: ["pods/portforward"]
verbs: ["get", "list", "create"]
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: allow-port-forward-for-deployment-a
namespace: production
subjects:
- kind: User
name: "xyz@org.com"
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: ClusterRole
name: allow-port-forward-for-deployment-a
apiGroup: rbac.authorization.k8s.io
Run Code Online (Sandbox Code Playgroud)
上面的设置允许所有服务,但我不想要这样。
user-roles ×10
asp.net-mvc ×2
laravel ×2
php ×2
admin ×1
architecture ×1
c# ×1
categories ×1
drupal ×1
function ×1
java ×1
kubernetes ×1
laravel-4 ×1
razor ×1
rbac ×1
unit-testing ×1
viewmodel ×1
woocommerce ×1
wordpress ×1