标签: forms-authentication

如何在SimpleMembership和WebSecurity中使用自己的数据库?什么是MVC4安全性?

我已经阅读了我能找到的关于这个主题的所有内容,包括MSDN文章和SO帖子,但我仍然非常迷茫和困惑.

问题

请回答以下内容(如果可能,请简要回答):

  1. 什么是SimpleMembership/SimpleMembershipProvider(WebMatrix.WebData)以及它们负责的是什么?

  2. 什么是WebSecurity(WebMatrix.WebData)?

  3. 什么是Membership(System.Web.Security)类?

  4. 为什么MVC4会创建一个UserProfile表和一个webpages_Membership表?它们是什么,有什么区别?MVC4创建的UserProfile类是什么?

  5. 什么是UsersContext类?

  6. 所有这些如何协同工作以进行用户身份验证?

我的情况

这些问题然后导致下一个问题:

假设我有一个包含用户的现有数据库(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

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

我可以更改FormsAuthentication cookie名称吗?

我可以更改FormsAuthentication cookie名称吗?

如果是,怎么样?

我得到的问题是,当我有两个Web应用程序部署在同一个域中时,当有人登录时,第二个将自动注销,因为他们使用相同的身份验证的cookie名称.

asp.net cookies forms-authentication

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

ASP.NET MVC表单身份验证+授权属性+简单角色

我正在尝试向ASP.NET MVC应用程序添加简单的身份验证和授权.

我只是试图在基本的表单身份验证上增加一些功能(由于简单性和自定义数据库结构)

假设这是我的数据库结构:用户:用户名密码角色(理想情况下是一些枚举.如果需要,则为字符串.目前,用户只有一个角色,但这可能会改变)

高级问题:鉴于上述数据库结构,我希望能够做到以下几点:

  • 使用表单身份验证简单登录
  • 用以下方式装饰我的行为:[授权(角色= {MyRoles.Admin,MyRoles.Member})]
  • 在我的视图中使用角色(以确定在某些部分中显示的链接)

目前,我真正确定的是如何进行身份验证.在那之后,我迷路了.我不确定我在哪个位置获取用户角色(登录,每次授权?).由于我的角色可能不是字符串,我不确定它们如何适应User.IsInRole().

现在,我在这里问,因为我没有找到一个"简单"完成我需要的东西.我见过多个例子.

对于身份验证

  • 我们有简单的用户验证来检查数据库和"SetAuthCookie"
  • 或者我们覆盖成员资格提供程序并在ValidateUser中执行此操作.在其中任何一个中,我不确定如何处理我的简单用户角色,以便它们使用:HttpContext.Current.User.IsInRole("Administrator")此外,我不知道如何修改它以使用我的枚举值.

对于授权,我看到:

  • 派生AuthorizeAttribute并实现AuthorizeCore OR OnAuthorization来处理角色?
  • 实施IPrincipal?

任何帮助将不胜感激.但是,我担心我可能需要很多细节,因为我用Google搜索的内容似乎都不适合我需要做的事情.

asp.net-mvc authorization forms-authentication

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

存储/分配经过身份验证的用户的角色

我正在升级网站以使用MVC,我正在寻找设置身份验证的最佳方法.

此时,我已登录Active Directory:验证用户名和密码,然后设置Auth cookie.

如何在登录时存储用户的角色信息,以便我的控制器在用户浏览网站时查看这些角色?

[Authorize(Roles = "admin")]
Run Code Online (Sandbox Code Playgroud)

从Active Directory获取角色列表没有问题.我只是不知道把它们放在哪里,以便控制器能够看到它们.

asp.net authentication asp.net-mvc forms-authentication

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

当用户登录Web应用程序时,如何实现"保持登录状态"

在大多数网站上,当用户即将提供登录系统的用户名和密码时,会出现一个"保持登录状态"的复选框.如果选中该复选框,它将使您在同一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)

forms-authentication java-ee stay-logged-in

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

将表单身份验证与Windows身份验证混合

我有一个(ASP.NET 3.5)Intranet应用程序,它被设计为使用表单身份验证(以及默认的aspnet成员资格系统).我还在另一个表中存储有关用户的其他信息,该表与aspnet_users表共享其主键.

对于属于我们域的用户,我将其域帐户名存储在辅助用户表中,并且我希望自动登录其域帐户名与存储在表中的名称匹配的用户.

我已经阅读了可用的指南 - 它们都来自两年或更长时间,并且假设您能够在单独的登录页面上激活Windows身份验证,该页面允许您提取域帐户名称.但是,据我所知,这在IIS7中是不可能的(整个身份验证方法适用于所有页面,无法有选择地停用,并且两种身份验证方法都不能应用于同一页面).

有没有办法让IIS通过请求用户的Windows域帐户名?我不需要正确的AD身份验证,只需要域名.

asp.net iis-7 forms-authentication windows-authentication

49
推荐指数
1
解决办法
6万
查看次数

如何对使用FormsAuthentication的ASP.NET MVC控制器进行单元测试?

我正在以测试驱动的方式使用ASP.NET MVC解决方案,我想使用表单身份验证将用户登录到我的应用程序.我想在控制器中得到的代码看起来像这样:

FormsAuthentication.SetAuthCookie(userName, false);
Run Code Online (Sandbox Code Playgroud)

我的问题是如何编写测试来证明这段代码的合理性?

有没有办法检查使用正确的参数调用SetAuthCookie方法?

有没有办法注入假/模拟FormsAuthentication?

tdd asp.net-mvc unit-testing forms-authentication mocking

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

ASP.NET MVC - 针对Active Directory对用户进行身份验证,但需要输入用户名和密码

我正在开发一个MVC3应用程序,需要用户对AD进行身份验证.我知道MVC3中有一个选项可以创建一个Intranet应用程序,可以根据AD自动对用户进行身份验证,但它使用Windows身份验证并自动登录.可以在"开放"工作站上访问此应用程序,用户需要输入其域用户名和密码.任何示例或在线教程都会很棒.一个示例项目将是例外.

asp.net-mvc forms-authentication windows-authentication asp.net-mvc-3 asp.net-mvc-2

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

允许使用ASP.Net Forms身份验证访问未经身份验证的用户到特定页面

我正在使用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的特定页面.我怎样才能做到这一点?

asp.net forms-authentication

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

表单auth重定向css/script包含到HTTP 302的登录页面

我在登录页面,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)的权限可能对每个人都有帮助.

我在其他项目中没有遇到过这个问题.

asp.net-mvc forms-authentication http-status-code-302

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