标签: forms-authentication

如何判断用户帐户是否已使用ASP.Net Forms身份验证登录?

我们的SSO登录过程对SQL Server中的自定义用户存储使用表单身份验证.

我们的新安全要求之一是仅允许帐户一次拥有一个活动会话.因此,只要用户登录,我们就会检查登录凭据是否已经处于活动状态,并且最好阻止新用户再次登录,直到其他会话结束.或者,如果更容易实现,我们可以强制其他会话结束.

使用表单身份验证有一种简单的方法吗?我们已经考虑了一种自定义方法,我们跟踪数据库中的每个会话,但这将是很多工作,我们可能必须修改我们的所有应用程序来检测session_end,我希望避免.我认为Forms Auth中必须有一些东西来处理这个问题.

我见过MembershipUser.IsOnline()方法,看起来很理想,但我们没有使用会员提供程序.

更新:为了清楚,我不需要检查当前用户是否已登录,我需要知道其他人是否已使用同一帐户登录.

asp.net security forms-authentication

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

ASP.NET:在代码中验证用户

我正在玩认证和授权以准备一些任务.我创建了两个页面:Login.aspx和Default.aspx.在配置文件中,我为表单设置了身份验证,并拒绝了未经身份验证的用户访问:

<authentication mode="Forms">
      <forms name="aaa" defaultUrl="~/Login.aspx" />
    </authentication>
    <authorization>
      <deny users="?"/>
    </authorization>
Run Code Online (Sandbox Code Playgroud)

然后我写了一些简单的代码来验证我在Login.aspx中的用户:

protected void Page_Load(object sender, EventArgs e)
        {
            GenericIdentity identity = new GenericIdentity("aga", "bbb");
            Context.User = new GenericPrincipal(identity, new String[] { "User" }); ;
            Response.Redirect("~/Default.aspx");
        }
Run Code Online (Sandbox Code Playgroud)

当我运行它时,重定向不会发生.而是一遍又一遍地调用Login.aspx,因为用户未经过身份验证(每次加载时Context.User.Identity.IsAuthenticated都为false).我究竟做错了什么?

asp.net authentication forms-authentication

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

在winforms项目中实现IPrincipal

我正在尝试在我当前的winforms项目中实现授权和身份验证.身份验证还必须匹配SQL Server 2008数据库中的用户.问题是,它是一个多用户程序,因此当添加新用户时,会创建一个数据库并将用户身份添加到数据库中.

我想知道这是否可能实施IPrincipal和IIdentity.到目前为止我只找到了ASP.NET实现.

任何人都可以给我一些指导,了解在winforms应用程序中实现密码/用户标识安全性的最佳方法是什么?请记住,必须使用SQL Server中的数据库进行验证.

这意味着该用户必须存在数据库,并且其凭据必须正确.

c# forms-authentication winforms

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

ASP.Net FormsAuthentication Redirect丢失Redirect和Application_AuthenticateRequest之间的cookie

我有一个FormsAuthentication cookie,它是永久性的,并且可以在开发,测试和生产环境中独立工作。我有一个可以进行身份​​验证的用户,创建了用户对象,并将身份验证Cookie添加到了响应中:

'Custom object to grab the TLD from the url
authCookie.Domain = myTicketModule.GetTopLevelDomain(Request.ServerVariables("HTTP_HOST"))
FormsAuthentication.SetAuthCookie(authTicket.Name, False)
Response.SetCookie(authCookie)
Run Code Online (Sandbox Code Playgroud)

对用户进行一点点处理以检查第一次登录,安全性问题等,然后使用以下提示重定向用户:

Session.Add("ForceRedirect", "/FirstTimeLogin.aspx")
Response.Redirect("~/FirstTimeLogin.aspx", True)
Run Code Online (Sandbox Code Playgroud)

通过调试中断,我可以验证cookie集合是否既包含与我出于不同目的设置的身份验证无关的cookie,也包含表单身份验证cookie。然后,该过程的下一步发生在global.asax中的ApplicationAuthenticateRequest处:

Sub Application_AuthenticateRequest(ByVal sender As Object, ByVal e As EventArgs)
    Dim formsCookieName As String = myConfigurationManager.AppSettings("FormsCookieName")
    Dim authCookie As HttpCookie = Request.Cookies(formsCookieName) 
Run Code Online (Sandbox Code Playgroud)

在这一点上,对于这个一个用户authCookie来说还算是什么。我还有15,000个其他用户没有受到这种方式的影响。但是,对于一个用户而言,cookie只是消失了而没有任何痕迹。我以前已经通过w3wp.exe异常,状态服务器异常和其他与IIS进程相关的异常看到了这一点,但是事件日志中没有任何异常。w3wp.exe不会崩溃,状态服务器有一些超时,但它们似乎不相关(已通过时间戳验证),并且仅在该一个域中的该用户身上发生(此代码在2个不同的TLD中使用,大约有10个其他子域) 。

我正在调查的一条途径是cookie可能太大了。我认为应该检查进入响应的cookie的大小,并且我认为它不会以这种方式对其产生影响。关于请求为何可能转储cookie的任何想法?

注意:我提到的我设置的辅助cookie也将被转储(非常小)。

编辑注释:发生这种情况时,会话令牌不会丢失。但是,由于身份验证cookie丢失,因此它将被忽略并在后续登录时被替换。

asp.net cookies redirect iis-6 forms-authentication

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

如何在ASP.NET的表单身份验证中更改"ReturnUrl"查询字符串键的名称?

使用ASP.NET的表单身份验证时,查询字符串键将传递给登录页面,该页面名为"ReturnUrl".

例如,如果您尚未登录并且想要查看类似的安全页面http://www.example.com/securepage.aspx,则会被重定向到:

http://www.example.com/login.aspx?ReturnUrl=securepage.aspx
Run Code Online (Sandbox Code Playgroud)

(或类似的东西,我不太确定ReturnUrl值).

现在,有没有办法将此ReturnUrl名称更改path为例如?我们在web.config中有一种配置吗?

asp.net forms-authentication

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

当登录到另一个实例时,asp.net表单身份验证已注销

我正在使用VS 2010在本地计算机上进行一些开发,并在Cassini中运行我的开发代码,我还制作了相同代码的副本并将其部署到c:\ mp并在IIS7中设置了一个Web应用程序以指向此目录。

两个应用程序都指向不同的数据库。我通过http:// localhost / mp访问IIS

当我登录其中任何一个时,如果我已经登录,则会导致我从另一个注销。

我感觉这与我们正在使用的表单身份验证有关,并且可能会覆盖cookie,但是我还没有发现任何有用的东西。

表单身份验证设置如下所示

<authentication mode="Forms">
    <forms name="MP" loginUrl="~/login.aspx" protection="All" timeout="20" path="/" slidingExpiration="true" cookieless="UseCookies" defaultUrl="~/Modules/Enquirer/Default.aspx" />
</authentication>
Run Code Online (Sandbox Code Playgroud)

我们还使用角色和成员资格提供者

 <roleManager enabled="true" cacheRolesInCookie="true" defaultProvider="AspNetSqlRoleProvider">
            <providers>
                <clear />
                <add name="AspNetSqlRoleProvider" connectionStringName="mpconnectionstring" applicationName="mp" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
            </providers>
        </roleManager>
        <membership defaultProvider="AspNetSqlMembershipProvider" userIsOnlineTimeWindow="20" hashAlgorithmType="SHA1">
Run Code Online (Sandbox Code Playgroud)

尽管我不确定这是否会成为问题,但我们也都使用了inProc会话状态。

谁能说出为什么发生这种情况以及如何解决呢?

asp.net forms-authentication

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

自定义表单身份验证+ MVC3 + AuthorizeAttribute

我基本上做的是这个.但是,每当我使用内置的AuthorizeAttribute时,MVC框架(我猜)都不会查看我的主体以确定用户是否具有适当的角色.它一直试图在app_data目录中创建一个新的MDF文件,因为它没有特权,所以它会爆炸.

这是预期的行为,我应该自己派生自己的AuthorizeAttribute并检查校长吗?

另一个奇怪的行为是,我在同一个域上有两个站点,我正在进行单点登录.在任一站点上,我使用相同的类库在AuthenticateRequest上重新创建我的自定义主体,并且我在调试时看到主体在每个站点上正确设置.但是,站点1(对用户进行身份验证的站点)使用内置的AuthorizeAttribute,它可以正常工作,但站点2正在尝试在调用具有AuthorizeAttribute的任何操作时创建MDF文件.

forms-authentication asp.net-mvc-3

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

应用程序在闲置10分钟后关闭用户

我和另外4个人一起做团体项目.我们正在使用嵌入式c#和Razor在MVC4中设计ASP.NET中的作业信息亭.它从服务器生成动态网页.我们在Windows 7环境中使用Visual Studio 2010 SP1和Microsoft SQL Server 2008 R2 SP1.

我正在努力让系统在闲置10分钟后将用户注销.我需要一些帮助,如何开始编码系统记录用户的方式.我基本上编写一个控制器来编辑我的组中其他成员已经完成的视图(网页).这样,计时器就会在所有视图页面上启动.

c# asp.net timeout forms-authentication asp.net-mvc-4

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

防止登录用户访问asp.net mvc 5中的登录页面

我一直试图让我的登录页面无法访问已登录的用户.除非他们没有登录,否则应该将他们重定向到他们的仪表板.

我做了以下工作,但他们都没有工作.有解决方案的人请?

    // GET: /Account/Login
    [AllowAnonymous]
    public ActionResult Login(string returnUrl)
    {
        if (Request.IsAuthenticated)
        {
            RedirectToAction("Index", "Dashboard");
        }

        ViewBag.ReturnUrl = returnUrl ?? Url.Action("Index","Dashboard");
        return View();
    }
Run Code Online (Sandbox Code Playgroud)

这也是

  // GET: /Account/Login
    [AllowAnonymous]
    public ActionResult Login(string returnUrl)
    {
        if (User.Identity.IsAuthenticated)
        {
            RedirectToAction("Index", "Dashboard");
        }            
        ViewBag.ReturnUrl = returnUrl ?? Url.Action("Index","Dashboard");
        return View();
    }
Run Code Online (Sandbox Code Playgroud)

任何指南将不胜感激.谢谢

asp.net asp.net-mvc forms-authentication

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

Firefox不允许我使用FormsAuthentication设置持久性Cookie

我有验证登录表单(带有“记住我”的选项)并验证用户身份(如果有效)的代码。然后,我设置表单身份验证cookie并重定向。

auth cookie设置如下,persistent参数是true用户是否选择了“记住我”。

FormsAuthentication.SetAuthCookie(response.UserObject.UserName, persistent);
Response.Redirect(url);
Run Code Online (Sandbox Code Playgroud)

我们已经在各种浏览器中对此进行了测试,并且总体来说还不错。但是,在Firefox中,.ASPXFORMSAUTHcookie始终是会话cookie,即使关闭了persistent以上参数,该cookie也会在关闭浏览器时过期true

我正在测试的Firefox版本是55.0.3(32位)。这是一个已知的错误?还是有其他原因导致Firefox不允许我设置持久性Cookie?难道它不再接受永久性cookie作为302重定向响应的一部分吗?

asp.net cookies firefox forms-authentication

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