我需要在ASP.NET MVC 5中为角色身份表添加一个额外的字段.
我使用迁移.
我添加了角色的扩展名,如:
public class ApplicationRole : IdentityRole
{
public ApplicationRole() : base() { }
public ApplicationRole(string name)
: base(name)
{
}
public virtual Project Project { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我的迁移课程是:
public partial class ProjectToIdentity : DbMigration
{
public override void Up()
{
CreateTable(
"dbo.Projects",
c => new
{
ID = c.Int(nullable: false, identity: true),
ProjectName = c.String(maxLength: 100),
})
.PrimaryKey(t => t.ID);
AddColumn("dbo.AspNetRoles", "Discriminator", c => c.String(nullable: false, maxLength: 128));
AddColumn("dbo.AspNetRoles", "Project_ID", c => c.Int());
CreateIndex("dbo.AspNetRoles", …
Run Code Online (Sandbox Code Playgroud) 我想请教一下您关于权限系统架构的建议。\n我将 Web UI 作为单独的前端项目,将 API 作为后端。
\n\n在 API 端,权限被为每个控制器/操作定义为符合数字的某个枚举,当我想创建某个角色时 - 我分配代表权限的一组枚举数字并将它们放入 JWT 令牌中。稍后,授权客户端在标头(承载令牌)中发送 JWT 令牌,并且当 API 将调用特定操作时,它会检查 JWT 令牌是否包含此控制器/操作标记的枚举值(数字)。这方面很容易并且有效。这里的好处是,在授权期间,我们只需根据角色从数据库中获取 \xe2\x80\x98numbers\xe2\x80\x99 的集合,并在访问本身期间过滤访问 - 因此它工作得很快。
\n\n我正在考虑 UI 逻辑如下 - 用户在 UI 端填写登录名/密码。UI 向 API 发送凭证,API 对用户进行身份验证,收集权限子集 + 一些附加数据并将其加密为 JWT 令牌 - UI 获取此令牌并将其封装在发送给客户端的 cookie 中(可能是 + 一些自己的信息)。因此,每次客户端访问任何 UI 页面时,它都会向 UI 发送 cookie,然后 UI 从 cookie 发出 API 请求获取 JWT 令牌。
\n\n然而,在这种情况下,JWT 令牌是加密的,UI 无法知道里面的数据。而且,即使它可以看到数据 - 它也不会提供任何信息,并且知道 API 端的动态角色集不会为 UI 端提供任何信息。连同编码的 \xe2\x80\x98numbers\xe2\x80\x99 一起仅在 API 端实时转换为权限。
\n\n问题是 webUI 应该如何知道它是否应该为某个用户提供对管理页面的访问权限。或者显示其他 UI 选项等。 …
我正在使用Visual Studio 2013,我有一个包含多个项目的解决方案.
我想从一个解决方案中提取一个项目来创建一个新的独立解决方案,它只包含这个项目.
有谁知道如何做到这一点?
奇怪,但代码的签名数组长度是相同的:
using (RSA rsa = certifiateToUse.GetRSAPrivateKey())
{
byte[] bytesData = Encoding.UTF8.GetBytes(input);
byte[] hash512 = rsa.SignHash(bytesData, HashAlgorithmName.SHA512, RSASignaturePadding.Pss);
byte[] hash256 = rsa.SignHash(bytesData, HashAlgorithmName.SHA256, RSASignaturePadding.Pss);
}
Run Code Online (Sandbox Code Playgroud)
hash512 和 hash256 的数组长度均为 512。我找不到一个合理的答案。也许我错过了一些明显的东西?我预计它的长度分别为 512 和 256 字节。
我已经阅读了一些文档,这是我用于 IntPtr 操作的类,以使它们更安全:
internal class MySafeHandleOperator : SafeHandleZeroOrMinusOneIsInvalid
{
public MySafeHandleOperator(IntPtr handle) : base(true)
{
SetHandle(handle);
}
public IntPtr GetPtr()
{
return this.handle;
}
protected override bool ReleaseHandle()
{
this.Dispose(true);
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
主要问题在ReleaseHandle方法中。我已经以这种方式使用过它,但我很好奇这是否是正确的使用方式?可能还有另一种正确的方法来释放句柄并清除此类?
我想以类似的方式使用此类(一个简单的示例):
Process p = Process.Start(processName);
MySafeHandleOperator mh = new MySafeHandleOperator(p.MainWindowHandle);
Run Code Online (Sandbox Code Playgroud)
如果有人能看一下并说我是否做对了一切,或者这个方法需要重写,我将不胜感激。
我正在努力使用PowerShell读取XML文件.
主要思想是 - 我有一个标志,表示是否读取或写入配置文件.如果需要编写文件 - 脚本将获取参数并将其保存到XML文件中.如果该标志设置为"read" - PowerShell脚本不带参数,但它应该从保存的XML中获取它们.
问题是从XML读取.我使用代码写入XML:
$Config = @{}
$Config.parameter1 = $parameterValue
$Config.dictionaryWithArray = $dictWithArray
($Config | ConvertTo-XML).Save("$path")
Run Code Online (Sandbox Code Playgroud)
保存的XML文件结果为:
<?xml version="1.0"?>
<Objects>
<Object Type="System.Collections.Hashtable">
<Property Name="Key" Type="System.String">parameter1</Property>
<Property Name="Value" Type="System.String">value_in_variable_parameter_Value</Property>
<Property Name="Key" Type="System.String">dictionaryWithArray</Property>
<Property Name="Value" Type="System.Collections.Generic.Dictionary`2[System.String,System.String[]]">
<Property Name="Key" Type="System.String">key1</Property>
<Property Name="Value" Type="System.String[]">
<Property Type="System.String">subkey1</Property>
<Property Type="System.String">subvalue1</Property>
</Property>
<Property Name="Key" Type="System.String">key2</Property>
<Property Name="Value" Type="System.String[]">
<Property Type="System.String">subkey2</Property>
<Property Type="System.String">subvalue2</Property>
</Property>
... and so on
Run Code Online (Sandbox Code Playgroud)
我尝试使用诸如http://blogs.technet.com/b/heyscriptingguy/archive/2012/09/13/powertip-use-powershell-to-easily-read-an-xml-document等方法来阅读此配置. aspx,但没有运气.
请问,请问如何读取配置文件,用这种方法编写?或者可能有更好的方法在写入之前序列化配置,所以它会更容易阅读吗?
我正在尝试从MahApps包中设置SimpleChildWindow https://github.com/punker76/MahApps.Metro.SimpleChildWindow
不幸的是,我不理解样本并且有几个问题:
它说"直接在XAML" - 我应该把它放在哪里?在父窗口中还是这个单独的窗口?
await this.ShowChildWindowAsync(new CoolChildWindow(){IsModal = false}); - 我们从哪里获得CoolChildWindow()?
这些问题可能看起来很愚蠢,但我无法在网络上找到任何进一步的信息或样本.
将不胜感激任何帮助或扩展代码示例.
我正在使用WPF MVVM模式,并且有一个DataGrid,如:
<DataGrid Grid.Row="1" Margin="0,10,0,0" AutoGenerateColumns="False" ItemsSource="{Binding Path=displayedResults}">
<DataGrid.Columns>
<DataGridTextColumn Width="*" Header="Operation" Binding="{Binding Path=Mode}" />
<DataGridTextColumn Width="*" Header="Status" Binding="{Binding Path=Result, Converter={StaticResource EnumToString}}" />
<DataGridHyperlinkColumn Width="100" Header="Details" ContentBinding="{Binding Source={StaticResource DetailsLink}}" />
</DataGrid.Columns>
</DataGrid>
Run Code Online (Sandbox Code Playgroud)
DetailsLink静态资源表示文本"链接".当DataGrid填充时,每行都有包含链接的最后一列,这将允许用户查看详细信息.要显示详细信息,我需要在行中获取整个对象,单击链接"链接".
不幸的是,我还没有找到解决方案.可能有一个明显的决定?:)
谢谢.
你能告诉我是否有办法使用这些选项从另一个字符串创建一个字符串?
例如:
{嗨|你好|嘿},你今天怎么样?
此字符串是使用这些值随机生成的字符串的基础.
所以它可以是:
你好,今天好吗?或者你好,你好吗?或任何变化.
有一个简单的方法吗?
初始字符串不是"固定"的主要内容,因此它可以是具有任何{.. | ..}值的任何字符串,可以在任何地方找到这个字符串.
c# ×6
.net ×5
mvvm ×2
wpf ×2
api ×1
architecture ×1
asp.net ×1
asp.net-mvc ×1
cryptography ×1
frontend ×1
handle ×1
hash ×1
intptr ×1
permissions ×1
powershell ×1
rsa ×1
string ×1
unmanaged ×1
xaml ×1
xml ×1
xml-parsing ×1