我已经阅读了我能找到的关于这个主题的所有内容,包括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
我可以更改FormsAuthentication cookie名称吗?
如果是,怎么样?
我得到的问题是,当我有两个Web应用程序部署在同一个域中时,当有人登录时,第二个将自动注销,因为他们使用相同的身份验证的cookie名称.
我正在尝试向ASP.NET MVC应用程序添加简单的身份验证和授权.
我只是试图在基本的表单身份验证上增加一些功能(由于简单性和自定义数据库结构)
假设这是我的数据库结构:用户:用户名密码角色(理想情况下是一些枚举.如果需要,则为字符串.目前,用户只有一个角色,但这可能会改变)
高级问题:鉴于上述数据库结构,我希望能够做到以下几点:
目前,我真正确定的是如何进行身份验证.在那之后,我迷路了.我不确定我在哪个位置获取用户角色(登录,每次授权?).由于我的角色可能不是字符串,我不确定它们如何适应User.IsInRole().
现在,我在这里问,因为我没有找到一个"简单"完成我需要的东西.我见过多个例子.
对于身份验证
对于授权,我看到:
任何帮助将不胜感激.但是,我担心我可能需要很多细节,因为我用Google搜索的内容似乎都不适合我需要做的事情.
我正在升级网站以使用MVC,我正在寻找设置身份验证的最佳方法.
此时,我已登录Active Directory:验证用户名和密码,然后设置Auth cookie.
如何在登录时存储用户的角色信息,以便我的控制器在用户浏览网站时查看这些角色?
[Authorize(Roles = "admin")]
Run Code Online (Sandbox Code Playgroud)
从Active Directory获取角色列表没有问题.我只是不知道把它们放在哪里,以便控制器能够看到它们.
在大多数网站上,当用户即将提供登录系统的用户名和密码时,会出现一个"保持登录状态"的复选框.如果选中该复选框,它将使您在同一Web浏览器的所有会话中登录.如何在Java EE中实现相同的功能?
我正在使用基于FORM的容器管理身份验证和JSF登录页面.
<security-constraint>
<display-name>Student</display-name>
<web-resource-collection>
<web-resource-name>CentralFeed</web-resource-name>
<description/>
<url-pattern>/CentralFeed.jsf</url-pattern>
</web-resource-collection>
<auth-constraint>
<description/>
<role-name>STUDENT</role-name>
<role-name>ADMINISTRATOR</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>FORM</auth-method>
<realm-name>jdbc-realm-scholar</realm-name>
<form-login-config>
<form-login-page>/index.jsf</form-login-page>
<form-error-page>/LoginError.jsf</form-error-page>
</form-login-config>
</login-config>
<security-role>
<description>Admin who has ultimate power over everything</description>
<role-name>ADMINISTRATOR</role-name>
</security-role>
<security-role>
<description>Participants of the social networking Bridgeye.com</description>
<role-name>STUDENT</role-name>
</security-role>
Run Code Online (Sandbox Code Playgroud) 我有一个(ASP.NET 3.5)Intranet应用程序,它被设计为使用表单身份验证(以及默认的aspnet成员资格系统).我还在另一个表中存储有关用户的其他信息,该表与aspnet_users表共享其主键.
对于属于我们域的用户,我将其域帐户名存储在辅助用户表中,并且我希望自动登录其域帐户名与存储在表中的名称匹配的用户.
我已经阅读了可用的指南 - 它们都来自两年或更长时间,并且假设您能够在单独的登录页面上激活Windows身份验证,该页面允许您提取域帐户名称.但是,据我所知,这在IIS7中是不可能的(整个身份验证方法适用于所有页面,无法有选择地停用,并且两种身份验证方法都不能应用于同一页面).
有没有办法让IIS通过请求用户的Windows域帐户名?我不需要正确的AD身份验证,只需要域名.
我正在以测试驱动的方式使用ASP.NET MVC解决方案,我想使用表单身份验证将用户登录到我的应用程序.我想在控制器中得到的代码看起来像这样:
FormsAuthentication.SetAuthCookie(userName, false);
Run Code Online (Sandbox Code Playgroud)
我的问题是如何编写测试来证明这段代码的合理性?
有没有办法检查使用正确的参数调用SetAuthCookie方法?
有没有办法注入假/模拟FormsAuthentication?
我正在开发一个MVC3应用程序,需要用户对AD进行身份验证.我知道MVC3中有一个选项可以创建一个Intranet应用程序,可以根据AD自动对用户进行身份验证,但它使用Windows身份验证并自动登录.可以在"开放"工作站上访问此应用程序,用户需要输入其域用户名和密码.任何示例或在线教程都会很棒.一个示例项目将是例外.
asp.net-mvc forms-authentication windows-authentication asp.net-mvc-3 asp.net-mvc-2
我正在使用ASP.Net Forms身份验证.我的Web.config看起来像这样.
<authentication mode="Forms">
<forms loginUrl="login.aspx"/>
</authentication>
<authorization>
<deny users="?" />
</authorization>
Run Code Online (Sandbox Code Playgroud)
所以目前每个aspx页面都需要身份验证.
我想允许甚至未经身份验证的用户访问名为special.aspx的特定页面.我怎样才能做到这一点?
我在登录页面,css文件和js文件中有一些包含.
<link rel="stylesheet" type="text/css" href="../../ext/resources/css/ext-all.css" />
<script type="text/javascript" src="../../ext/bootstrap.js"></script>
Run Code Online (Sandbox Code Playgroud)
不幸的是,浏览器为这些请求获得了302响应.Forms Auth将请求视为未经授权并将其重定向到登录页面.它没有意识到请求首先来自登录页面.
GET http://localhost:50880/ext/resources/css/ext-all.css HTTP/1.1
HTTP/1.1 302 Found
<html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href="/Account/LogOn?ReturnUrl=%2fext%2fresources%2fcss%2fext-all.css">here</a>.</h2>
</body></html>
Run Code Online (Sandbox Code Playgroud)
我想也许设置包含文件夹(ext)的权限可能对每个人都有帮助.
我在其他项目中没有遇到过这个问题.