所以我做了一些重构,我的两个类现在看起来完全一样,除了它们的构造函数.
这些类包装了一个不太漂亮的API对象,并添加了属于API边缘的一些功能.
class A extends API {
public A {
this.APIOption = Option1;
this.AnotherAPIOption = Option2;
// a few more
}
public ArrayList<String> somethingTheAPIDoesntDo() {
// Do something the API doesn't provide but I use alot
}
// Other shared methods
}
class B extends API {
public B {
this.APIOption = Option3;
this.AnotherAPIOption = Option4;
// a few more
}
public ArrayList<String> somethingTheAPIDoesntDo() {
// Do something the API doesn't provide but I use alot
}
// Other shared …Run Code Online (Sandbox Code Playgroud) 我正在尝试学习一些关于JAVA的东西,最好的方法是创建一些我实际使用的东西并知道它的目的是什么.我正在尝试与HyperV(WMI库)进行通信.
比如我发现以下内容,我的问题是:如何使用它?我正在使用Netbeans来创建GUI.
另外,如何将jInterop加载到我的项目中,以便我可以使用它?
谢谢.
我正在为我们的应用程序开发一些基于角色的安全性,并且我本质上是想进行自定义的Verison MVC- AuthorizeAttribute但仅限于业务逻辑层,在该层我们不链接到MVC。
我看过了,PrincipalPermissionAttribute但由于密封,似乎没有办法自定义它。我只想创建一个自定义版本,可以在不使用多个属性的情况下检查任何角色列表中的成员身份,还可以定义在哪里查找角色成员身份。
.Net中缺少类似的内容吗?还是有人在不重新实现ASP.Net的AuthorizeAttribute / RoleProvider / etc的情况下对此有一些见识?
编辑
我目前正在运行命令式版本,但我宁愿使用声明式属性版本,因为在方法/类上方更容易看到它。
现在,我在业务层的抽象基类中具有以下内容:
protected void EnsureEditorLevelAccess()
{
var allowedRoles = new[]
{
Roles.Administrator,
Roles.Editor,
};
var roles = GetAccountRoles(GetCurrentUsername());
if (roles.Any(role => allowedRoles.Contains(role)))
{
return;
}
throw new SecurityException("You do not have sufficient privileges for this operation.");
}
Run Code Online (Sandbox Code Playgroud)
我喜欢使用Roles.Administratoretc,因为角色名称很丑陋(基于Active Directory组...),所以我考虑将这些详细信息包装在自定义属性的构造函数中,我可以将其放到类/方法之上。
GetAccountRoles 只是可注入角色提供程序属性的外观,我可以将其设置为使用AD或使用数据库的测试版本。
我可以继承子类Attribute,但不确定如何启动安全检查。
.net c# code-access-security security-roles declarative-authorization
客户端 - 服务器范例的三层软件体系结构有三个不同的层:
表示层 - 用户可以直接访问的层,例如UI或网页.也称为客户端.
应用层 - 该层封装业务逻辑(如业务规则和数据验证),域概念,数据访问逻辑等.也称为中间层.
数据层 - 用于存储应用程序数据的外部数据源,例如数据库服务器.
为什么将单独层的逻辑封装在单独的软件模块中是有利的?