标签: simplemembership

User.IsInRole不起作用

我有ASP.NET MVC 4应用程序.我使用Simple Membership Provider允许在登录表单下勾选记住我的复选框.如果勾选,则创建persitent cookie .ASPXAUTH,从登录日期起100天后到期.一切正常,除了应用程序的主菜单.

菜单的某些部分仅供管理员用户使用.我用:

@if (User.IsInRole("Administrator")) { @Html.Partial("_MainMenuPartial") }
Run Code Online (Sandbox Code Playgroud)

锁定它们不被普通用户渲染.登录系统后,此方法可以正常工作.当我在一段时间后返回并使用持久性cookie来验证我时,我确实登录了,但是

@User.IsInRole("Administrator")
Run Code Online (Sandbox Code Playgroud)

返回"False",因此我看不到管理员菜单项.同时

@User.Identity.Name
Run Code Online (Sandbox Code Playgroud)

返回正确的登录名和

@User.Identity.IsAuthenticated
Run Code Online (Sandbox Code Playgroud)

返回"True",证明持久性cookie工作正常.为什么我不能访问用户角色,即使用户通过系统进行身份验证呢?

asp.net-mvc forms-authentication .aspxauth simplemembership

22
推荐指数
7
解决办法
3万
查看次数

SimpleMembershipProvider不工作

我用VS2012开始了一个新的互联网项目,我试图重新调整我的项目,我似乎无法保持SimpleMemberhsipProvider的工作.基本上,我所做的就是将模型对象与其他几个项目一起移动到核心项目中.我已经实现了Ninject,并试图通过使用存储库模式来获取我的数据来抽象实体.我真的不觉得我对当前的项目做了很多改变,但出于某种原因,当我启动应用程序时,我得到:

{"尚未启用角色管理器功能."}

框架提供的ActionFilter是在以下情况下引发错误的位置:

WebSecurity.InitializeDatabaseConnection("DefaultConnection","UserProfile","Id","UserName",autoCreateTables:true);

叫做.

这是一些堆栈跟踪:

[ProviderException:尚未启用角色管理器功能.] System.Web.Security.Roles.EnsureEnabled()+
9561885
System.Web.Security.Roles.get_Provider()+8
WebMatrix.WebData.WebSecurity.InitializeProviders(DatabaseConnectionInfo connect, String userTableName,String userIdColumn,String userNameColumn,Boolean autoCreateTables)+104
WebMatrix.WebData.WebSecurity.InitializeDatabaseConnection(String connectionStringName,String userTableName,String userIdColumn,String userNameColumn,Boolean autoCreateTables)+100
InoutBoard.Core.Infrastructure.Filters.SimpleMembershipInitializer .. C:\ Users\Kyle\Documents\Visual Studio 2012\Projects\InoutBoard\InoutBoard.Core\Infrastructure\Filters\InitializeSimpleMembershipAttribute.cs中的ctor():42

[InvalidOperationException:无法初始化ASP.NET Simple Membership数据库.有关详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkId=256588]
c:\ Users\Kyle\Documents\Visual Studio 2012中的InoutBoard.Core.Infrastructure.Filters.SimpleMembershipInitializer..ctor() \项目\ InoutBoard\InoutBoard.Core \基础设施\ \过滤InitializeSimpleMembershipAttribute.cs:46

我将在以下链接上的github上托管代码https://github.com/keroger2k/InoutBoard

asp.net asp.net-mvc entity-framework asp.net-mvc-4 simplemembership

20
推荐指数
4
解决办法
3万
查看次数

如何使用用户名或电子邮件使WebSecurity.Login登录?

WebSecurity.Login 在simplemembership中使用用户名和密码,如何使用用户名或电子邮件而不是用户名?来登录用户,以使用户可以自由输入他的电子邮件或用户名进行登录.

asp.net-mvc-4 .net-4.5 simplemembership

20
推荐指数
2
解决办法
3万
查看次数

如何使用SimpleMembership管理配置文件?

我有一个基于互联网模板的ASP.NET MVC 4站点.我正在使用我使用该模板设置的SimpleMembership.

我可以修改已经为我创建的Users表,但我不确定修改我添加的额外字段的"正确"方法.我想要Fullname,Email等,并将它们添加到用户表中,但似乎无法通过SimpleMembership WebSecurity.*静态方法进行更新.

您是否应该在SimpleMembership API之外使用EF自己更新这些属性?

asp.net-mvc-4 simplemembership

19
推荐指数
3
解决办法
2万
查看次数

使用SimpleMembershipProvider时使用salt

可能重复:
WebMatrix WebSecurity PasswordSalt

有没有办法让simpleMembershipProvider使用盐?

当我创建我的mvc4 web项目并将默认连接设置为sqlexpress,然后注册,我的用户没有密码盐

在此输入图像描述

我希望它尽可能安全,没有太多麻烦.

asp.net membership-provider asp.net-mvc-4 simplemembership

18
推荐指数
1
解决办法
5441
查看次数

登录用户的ID

如何获取登录用户的UserId?我正在使用标准系统生成的AccountModel.我可以使用以下命令获取用户名

User.Identity.Name
Run Code Online (Sandbox Code Playgroud)

但我没有看到UserId字段.我想将UserId用作另一个表的外键.

c# asp.net-mvc-4 simplemembership

18
推荐指数
3
解决办法
3万
查看次数

如何在MVC4中使用SimpleMembership重置或更改密码?

我一直在使用MVC4 Internet模板编写Web应用程序.我真的不需要任何复杂的用户管理,所以我选择了默认的SimpleMembershipProvider.我正在初始化App_Start中的成员资格,我有角色和用户设置和工作.我没有使用SSO或任何其他OAuth功能.现在我有一个忘记密码的测试人员,在谷歌搜索一整天后,我发现我不知道如何重置密码或更改密码!

我已阅读文档,发现如果使用SimpleMembership则不支持 ResetPassword功能.我的问题是,我怎么做:

  1. 从SimpleMembership切换到使用SimpleMembership表格和格式的标准成员资格
  2. 将用户密码重置为我指定的密码?

我发现web.config设置(理论上)将成员资格提供程序设置为使用SimpleMembership,但我不确定如何指定要使用的表(假设这是正确的方法).

web.config部分:

<roleManager enabled="true" defaultProvider="SimpleRoleProvider">
  <providers>
    <clear/>
    <add name="SimpleRoleProvider" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData"/>
  </providers>
</roleManager>
<membership defaultProvider="SimpleMembershipProvider">
  <providers>
    <clear/>
    <add name="SimpleMembershipProvider" type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData" />
  </providers>
</membership>
Run Code Online (Sandbox Code Playgroud)

以及我认为我需要在web.config中拥有的当前InitializeDatabaseConnection:

WebSecurity.InitializeDatabaseConnection("UPEFSSecurity", "Datamart_User", "UserId", "UserName", autoCreateTables: true);
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc-4 simplemembership

18
推荐指数
1
解决办法
2万
查看次数

SimpleMembership - 有人对n级友好吗?

我们被告知,"SimpleMembership"是asp.net会员/角色管理的未来.MVC4"Internet应用程序"模板使用SimpleMembership实现帐户管理.但是,它的实现方式将所有应用程序层合并为1.

让我感到震惊的是,经过他们用MVC正确分层应用程序的所有工作后,我们得到了没有DI,使用WebMatrix DLL和完全缺乏SoC的成员资格的"前进之路".特别是SimpleMembershipInitialization的ActionFilterAttribute - 它继承自MVC属性并直接调用EF DBContext.

我意识到自己很懒,但有人使用SimpleMembership做了一个"正确"的模板,这意味着我的应用程序中可以有适当的分隔层,而且我的MVC应用程序中没有EF DBContext引用?

simplemembership

17
推荐指数
1
解决办法
2090
查看次数

ASP.Net MVC 4和WebSecurity - 通过电子邮件进行用户注册确认

我正在使用ASP.Net MVC 4项目的默认Internet应用程序模板.帐户控制器中的注册操作是这样的 -

[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Register(RegisterModel model)
{
    if (ModelState.IsValid)
    {
        // Attempt to register the user
        try
        {
            WebSecurity.CreateUserAndAccount(model.UserName, model.Password);
            WebSecurity.Login(model.UserName, model.Password);
            return RedirectToAction("Index", "Home");
        }
        catch (MembershipCreateUserException e)
        {
            ModelState.AddModelError("", ErrorCodeToString(e.StatusCode));
        }
    }
    // If we got this far, something failed, redisplay form
    return View(model);
}
Run Code Online (Sandbox Code Playgroud)

但是,这并未提供任何可立即使用的功能来使用电子邮件地址进行注册,以及发送电子邮件以进行确认和帐户激活的步骤. 我看到WebMatrix的Starter Site模板使用WebSecurity并提供我正在寻找的功能,但它不遵循标准的MVC模式.我可以混合两种方法来获得MVC 4兼容解决方案,但我正在寻找准备好使用代码来节省时间.任何好的样品或指针都非常感谢.谢谢.

security asp.net-mvc-4 simplemembership

16
推荐指数
1
解决办法
2万
查看次数

将MVC 4 SimpleMembership与现有的数据库优先EF模型结合使用

我试图在我的MVC 4中第一次使用SimpleMembership,我已经有了一个基于它的现有数据库和EF5模型!我搜索了很多,但我无法找到如何在我的情况下使用它,并在我自己的模型下拥有一切.

如果有人能让我知道如何做到这一点会很棒.

谢谢

ef-database-first asp.net-mvc-4 sql-server-2012 entity-framework-5 simplemembership

16
推荐指数
2
解决办法
2万
查看次数