我正在尝试使用MVC 5的身份解决方案,但却陷入了一些非常简单的问题:我希望AccountController上的登录方法在验证模型后立即获取loged用户的名字(我不想从模型中使用它!).
这是我的一段代码:
var result = await SignInManager.PasswordSignInAsync(model.Login, model.Password, false, shouldLockout: false);
string NomeUsuario = "";
if (result == SignInStatus.Success)
{
NomeUsuario = User.Identity.Name; //<== getting the logged user's name
}
Run Code Online (Sandbox Code Playgroud)
我得到的问题是这个属性为null.
经过大量的测试,我发现了一些奇怪的事情:如果我进行了两次身份验证,那么在第二次传递时,它会起作用.但每次我注销并尝试再次登录时,它将在用户名上显示为null.
有什么问题的帮助吗?
好的,所以我完全依赖我的迁移和种子代码来维护所有数据库结构和初始数据.因此,我面临的情况是,我在此版本上所做的所有更改都是直接在数据库上进行的(存储过程和更新),并且C#代码本身没有任何变化.
问题是:由于我想使用新的迁移进行那些DataBase特定的更改(并且"添加 - 迁移"将不执行任何操作 - 因为代码没有更改),如何强制新的空代码首先迁移到put我手动更改了吗?
我经历了很多类似的问题,但找不到任何对我有用的东西.
我正在将我的IDE从VisualStudio for Web(v10)升级到Visual Studio 2015(v14,我猜)社区版.我试图在新IDE上使用的主要项目是MVC 5(5.2.3),EF 6.1(6.1.3)和其他一些东西.
问题是:在新IDE上打开项目时,一切看起来都很好(甚至编译和工作).我在项目资源管理器上运行了MVC上下文菜单(在适当的时候显示"添加控制器..."和"添加视图...").Razor Intellisense只是(真的很烦人).
当我打开一个View文件(.cshtml)时,我会收到几个帮助器的警告,一些"使用"是灰色的(即使它们应该是需要的),@ model myModel显示为@之后的所有内容.模型指令不是剃刀(它通过intellisense着色处理为HTML).
我已经找到并尝试过的内容:
从VS2015创建另一个MVC项目时,一切正常.
这是一个恼人问题的例子:
谁能告诉我VisualStudio 2017试图用关键字下面的灰色省略号告诉我什么?
无论是将鼠标放在它上面还是右键单击它都会告诉我为什么这个符号显示在那里.
我只需要在SQL Azure数据库上创建一个新用户,可以从每个表中SELECT/INSERT/UPDATE/DELETE,并执行每个proc,但不能创建/更改/删除任何内容.
换句话说,我需要一个无法对数据库运行DDL命令的新用户.
我已经设法创建了登录和用户(在主模式上).有帮助吗?
- 编辑1一旦我在SQL Azure上创建了新用户,它就已经可以创建表和过程(因此,它是REVOKE强大功能的基础).这里是从Master数据库发出的命令:
CREATE LOGIN Sistema WITH PASSWORD = 'XXX';
CREATE USER Sistema
FOR LOGIN Sistema
WITH DEFAULT_SCHEMA = dbo; --This command was run on Master database, AND on my MainDatabase.
Run Code Online (Sandbox Code Playgroud)
- 解决方案(基于Jisaak的回答):
--After creating login and user, I issued those commands from MainDatabase:
EXEC sp_addrolemember db_datareader, Sistema
EXEC sp_addrolemember db_datawriter, Sistema
EXEC sp_droprolemember db_owner, Sistema --As it appears, SQL Azure defaults new users as "db_owners", which must be revoked
Run Code Online (Sandbox Code Playgroud)