我正在构建单页面应用程序并遇到防伪令牌问题.
我知道为什么问题发生我只是不知道如何解决它.
发生以下情况时,我收到错误消息:
防伪令牌适用于用户"",但当前用户是"用户名"
发生这种情况的原因是因为我的应用程序是100%单页,并且当用户通过ajax帖子成功登录时/Account/JsonLogin
,我只是使用从服务器返回的"已验证视图"切换出当前视图但不重新加载页.
我知道这就是原因,因为如果我在步骤3和4之间简单地重新加载页面,就没有错误.
所以似乎@Html.AntiForgeryToken()
在加载的表单中仍然为旧用户返回一个令牌,直到重新加载页面.
如何更改@Html.AntiForgeryToken()
为新的经过身份验证的用户返回令牌?
我注入了新的GenericalPrincipal
带有自定义IIdentity
每个Application_AuthenticateRequest
这样的时候@Html.AntiForgeryToken()
被调用HttpContext.Current.User.Identity
,其实我与自定义标识IsAuthenticated
属性设置为true,但@Html.AntiForgeryToken
似乎仍然呈现为老用户令牌,除非我做一个页面重新加载.
我已经阅读了我能找到的关于这个主题的所有内容,包括MSDN文章和SO帖子,但我仍然非常迷茫和困惑.
请回答以下内容(如果可能,请简要回答):
什么是SimpleMembership/SimpleMembershipProvider(WebMatrix.WebData)以及它们负责的是什么?
什么是WebSecurity(WebMatrix.WebData)?
什么是Membership(System.Web.Security)类?
为什么MVC4会创建一个UserProfile表和一个webpages_Membership表?它们是什么,有什么区别?MVC4创建的UserProfile类是什么?
什么是UsersContext类?
所有这些如何协同工作以进行用户身份验证?
这些问题然后导致下一个问题:
假设我有一个包含用户的现有数据库(ID,用户名,密码).我正在创建一个新的MVC4应用程序并使用表单身份验证.用户密码以加密形式(不是bcrypt)存储在数据库中.
我需要做些什么才能使它与MVC4一起使用?
我是否必须创建自定义MembershipProvider?
据我所知,WebSecurity是一个静态类(Module),它与MembershipProvider交互.MembershipProvider是一个解释特定函数如何工作的类,例如ValidateUser,CreateUser,ChangePassword.
为了解决我的问题,我假设我需要创建一个自定义MembershipProvider并告诉WebSecurity使用我的新MembershipProvider.
我已经在这个问题上获得了赏金,并打算将其授予安迪·布朗,以获得出色的答案.
forms-authentication asp.net-membership membership-provider asp.net-mvc-4 simplemembership
如何基于ASP.NET成员资格提供程序为ASP.NET MVC 2创建自定义成员资格?
c# asp.net asp.net-mvc membership-provider custom-membershipprovider
问题,没有方法:
bool ChangePassword(string newPassword);
Run Code Online (Sandbox Code Playgroud)
你必须知道当前的密码(可能是哈希和遗忘).
这里有一些关于这个问题的线索,但是大多数都已经过时了,其中的参考链接更加过时了.
我有这个网站,我需要连接到一个外部的SQL服务器(mssql)与它自己的表结构,使用默认的asp.net成员资格提供程序结构不是一个选项.表格布局非常简单,使用方式看起来像这样(它叫做个人)
Individuals
- UserGuid (uniqueidentifier/guid, unique)
- Name (varchar)
- Password (varchar)
- HasAccess (tinyint/ 1 or 0)
- DateTime (datetime)
- Log (xml)
Run Code Online (Sandbox Code Playgroud)
所需的功能只是记录某人,其余的没有必要:)
我遵循了一些指南,但其中大多数已经过时且非常复杂.不幸的是,msdn示例遵循这种模式,文档不是很好.
因此,如果有人得到一些资源显示如何或愿意发布代码示例或类似的东西,我会很感激.
谢谢!
我正在为ASP.Net MVC网站创建自定义成员资格提供程序.作为更大的库的一部分,提供程序被创建为单独的类.后端数据存储需要灵活,因为它可以是Xml文件或SQL数据库.我最初的想法是为数据存储创建一个接口,并使用依赖注入将其注入提供程序.
最终结果是开发人员可以继承数据存储接口并提供更新数据所需的方法,然后由自定义成员资格提供程序使用.
但是,由于我自己缺乏技能,我无法弄清楚如何将该类添加到网站时将其注入会员提供商?将数据存储链接到提供程序需要做些什么?在网站上启用此功能的最简单方法是什么?
asp.net-mvc dependency-injection data-storage membership-provider
好吧,我有一个很大的问题,我正在努力解决,但我无法做到,所以我需要你的帮助.我在asp.net 4.0中有一个Web应用程序,我实现了自定义成员资格和角色提供程序.当我打开应用程序主页时,它连接到数据库并检索一些信息.还有一个登录表单,当我登录时,它通过数据库验证用户并将我重定向到保留页面,但出现此错误:
建立与SQL Server的连接时发生与网络相关或特定于实例的错误.服务器未找到或无法访问.验证实例名称是否正确,以及SQL Server是否配置为允许远程连接.(提供程序:SQL网络接口,错误:26 - 查找指定的服务器/实例时出错)
描述:
在执行当前Web请求期间发生了未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.
例外细节:
System.Data.SqlClient.SqlException:建立与SQL Server的连接时发生与网络相关或特定于实例的错误.服务器未找到或无法访问.验证实例名称是否正确,以及SQL Server是否配置为允许远程连接.(提供程序:SQL网络接口,错误:26 - 查找指定的服务器/实例时出错)
来源错误:
在执行当前Web请求期间生成了未处理的异常.可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息.
我尝试了很多东西,我在stackoverflow中找到了一些解决方案,但没有任何效果.这是我的连接线:
<connectionStrings>
<clear/>
<remove name="LocalSqlServer"/>
<add name="LocalSqlServer" connectionString="Data Source=MSSQL2008-1;Initial Catalog=agency;
Integrated Security=False;User ID=adis_agency;Password=niarda2012;Connect Timeout=180;Encrypt=False;
Packet Size=4096" providerName="System.Data.SqlClient" />
<add name="AgencyConn" connectionString="Data Source=MSSQL2008-1;Initial Catalog=agency;
Integrated Security=False;User ID=adis_agency;Password=niarda2012;Connect Timeout=180;Encrypt=False;
Packet Size=4096" providerName="System.Data.SqlClient"/>
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)
以下是成员资格和角色管理器web.config部分:
<membership defaultProvider="AuthProvider">
<providers>
<clear/>
<add name="AuthProvider" type="AuthenticationProvider" applicationName="~/Reserved/" connectionStringName="AgencyConn"/>
</providers>
</membership>
<roleManager enabled="true" defaultProvider="MyRoleProvider">
<providers>
<clear/>
<add name="MyRoleProvider" type="RoleAccessProvider" connectionStringName="AgencyConn"/>
</providers>
</roleManager>
Run Code Online (Sandbox Code Playgroud)
请任何人帮忙弄清楚什么是错的?
asp.net asp.net-membership roleprovider membership-provider sql-server-2008
我使用ASP.NET的默认sql成员资格提供程序,我想提供一个页面来更改用户的用户名.我相信我确信我可以使用自定义提供程序执行此操作,但是可以使用默认提供程序完成吗?
我的问题的第二部分是:我是否应该允许用户在创建帐户后更改其用户名?
membership asp.net asp.net-membership sqlmembershipprovider membership-provider
出于某种原因,在ASP.NET MVC中设置成员资格的想法似乎真的令人困惑.
任何人都可以提供一些明确的步骤来设置必要的表,控制器,类等,以拥有一个有效的成员资格提供者?
我知道MVC附带的Demo有一个Accounts控制器.但是,我应该在自己的项目中使用它吗?如果是这样,我需要什么才能准备好现有数据库?如果没有,我如何了解实施会员提供商需要做些什么?
我目前正在将一个非常古老但经常工作的ASP网站转换为ASP.Net.
它有一个完全自定义的书面用户管理系统.虽然它工作正常,但它确实需要刷新,因为我希望它对于未来的一些项目更加灵活.
当我向某人询问此事时,他们说"你需要使用微软提供商",并就微软如何免费发布所有这些东西以及它们有多好,应该尽可能多地使用它们做了演讲.
我已经对它进行了相当多的研究(主要是关于http://asp.net/learn上的视频),并且对一些功能印象非常深刻,因为似乎会有物品的拖放组件我的年龄要写.
但是,当前的成员资格数据库很难解释,它是一个完全自定义编写的数据库,它有许多内部关系......它与默认的Microsoft Provider并不真正"兼容".
我已经看过如何:创建自定义成员资格提供程序?,但我感到有点偏离了我的舒适区,并担心它会变慢,引入安全漏洞或根本无法工作.
在一天结束时,Microsoft成员资格提供程序应该为我工作 - 我真正需要的唯一自定义是登录使用我的数据库中的用户名/密码字段和创建用户脚本,其中有很多自定义代码到几个政党系统(需要提供服务等).
我只是想知道,如果遇到类似情况你会怎么做?
使用Microsoft成员资格提供程序,并以某种方式让它为您工作(虽然我想建议)
使用Microsoft成员资格提供程序,但使用围绕代码自定义的自定义提供程序.
使用您自己完全定制的解决方案
asp.net asp.net-membership membership-provider custom-membershipprovider