我今天花了几个小时研究如何使用C#本机主机来使用Chrome本机消息传递.从概念上来说,这很简单,但是我从这些其他问题的帮助(部分)中解决了一些障碍:
原生消息Chrome
从Chrome扩展到使用C#编写的本机主机的本机消息传递
很慢,无法将"大量"数据从Chrome扩展传递到主机(用C#编写)
我的解决方案发布在下面.
用户登录成功后,我需要添加对用户身份的声明.这是我认为需要发生的地方:
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl, string myClaimValue)
{
if (!ModelState.IsValid)
{
return View(model);
}
var result = await SignInManager.PasswordSignInAsync(model.UserName, model.Password, model.RememberMe, shouldLockout: false);
switch (result)
{
case SignInStatus.Success:
UserManager.AddClaim(User.Identity.GetUserId(), new Claim("MyClaim", myClaimValue));
return RedirectToLocal(returnUrl);
case SignInStatus.LockedOut:
return View("Lockout");
case SignInStatus.RequiresVerification:
return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe });
case SignInStatus.Failure:
default:
ModelState.AddModelError("", "Invalid login attempt.");
return View(model);
}
}
Run Code Online (Sandbox Code Playgroud)
我认为这是正确的方法,但是调用User.Identity.GetUserId()抛出异常.它似乎User.Identity没有被成功的登录更新.代替这个现实,对我来说,获取新签名用户ID的最佳方式是什么,以便我可以添加声明?
或者我这样做是错的?
我正在使用System.Net.WebClient.DownloadString下载JSON.我收到了有效回复:
{
"FormDefinition": [
{
"$id":"4",
"Class":558,
"ClassDisplayLabel":"Punchworks",
"Name":"Punchworks Form"
},
{
"$id":"6",
"Class":558,
"ClassDisplayLabel":"Punchworks",
"Name":"Punchworks Form test second"
},
{
"$id":"46",
"Class":558,
"ClassDisplayLabel":"Punchworks",
"Name":"any_Name"
},
{
"$id":"47",
"Class":558,
"ClassDisplayLabel":"Punchworks",
"Name":"Punchworks Form test second"
},
{
"$id":"49",
"Class":558,
"ClassDisplayLabel":"Punchworks",
"Name":"Testing Name ??´????? ???? ACEeišuu { [ ( ~ ! @ # "
},
{
"$id":"50",
"Class":558,
"ClassDisplayLabel":"Punchworks",
"Name":"something new"
},
{
"$id":"56",
"Class":558,
"ClassDisplayLabel":"Punchworks",
"Name":"Testing Name руÌÑÑкий æ±‰è¯æ¼¢èªž ĄČĘėįšųū { [ ( ~ ! @ # "
},
{
"$id":"57", …Run Code Online (Sandbox Code Playgroud) 我有一个像这样的控制器:
[Authorize(Users="Admin")]
public class MyController : Controller
{
...
[AllowAnonymous]
public AllUsersAction()
{
}
}
Run Code Online (Sandbox Code Playgroud)
除了我确实想要授权AllUsersAction,只有所有授权用户都应该能够点击它,而不仅仅是管理员.
该怎么办?
编辑:我知道我可以授权整个控制器,并为所有应该可用的操作提供更多限制Admin.但我宁愿不把属性放在每一个动作上,而是一个.
问题可以更好地表达:如果目前不可能实现这种"极简主义",那么实现会是什么样的?
我正在尝试在我的Windows机器上使用cntlm代理与使用PhantomJS的Windows身份验证的IIS上的本地Web应用程序进行通信.要创建代理,我正在做:cntlm -v -u username@domain -p password -l 1456 localhost:80
我的应用程序住在 localhost/myapp
为了测试这是否有效,我尝试浏览,localhost:1456/myapp但我总是得到一个auth挑战,没有合理的用户名/密码组合似乎工作.有关为什么此设置可能无法按预期工作的任何想法?
当我在浏览器中点击代理端点时,这是来自cntlm的输出:
有一个REG_MULTI_SZ值,我想在一个字符串数组中,以便我的程序可以用它们做其他事情.我从来没有使用过C++来访问注册表,所以在按照一些例子后我有点迷失了.我正在使用VS10.
有一个简单的方法吗?谢谢.