请问有谁能告诉我,如何处理java中基于表单的身份验证中的j_security_check servlet?
我是否必须在web-xml文件中使用j_security_check名称映射servlet类,如:
<servlet>
<servlet-name>Anyname</servlet-name>
<servlet-class>Anyclass</servlet-name>
</servlet>
<servlet-mapping>
<servlet-name>Anyname</servlet-name>
<url-pattern>/j_security_check</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
如果我输入用户名和密码,然后单击提交,那么具有j_security_check名称的servlet 将如何处理这些信息?该servlet将如何验证那些输入的用户名和密码,并获取资源(如果是身份验证),然后授权成功,否则将出现错误页面.j_security_check servlet将如何做到这一点?
过去几天我一直在研究这个问题.
我们正在开发一个需要支持100,000多个用户的ASP.Net MVC站点.我们希望保持快速,可扩展和简单.我们有自己的用户和user_role等SQL数据库表.我们没有使用服务器控件.
鉴于没有服务器控件,并且需要创建自定义membershipProvider,使用ASP.Net Auth/Membership还有什么好处?
另一种选择似乎是创建自定义代码以将UniqueID CustomerID放入cookie中并使用该身份验证进行身份验证.或者,如果我们对嗅探器有偏执,我们也可以加密cookie.
在这种情况下(MVC和客户数据在我们自己的表中)使用ASP.Net auth/membership框架是否有任何实际好处,或者完全自定义解决方案是否可行?
更新:我发现一个人(马特布里格斯)似乎得出了我的一些相同的结论:这来自这个链接:http: //webcache.googleusercontent.com/search?q = cache: Xm1-OrRCZXIJ: mattcode.net/posts/asp-net-membership-sucks+asp.net+membership+sucks&hl=en&gl=us&strip=1
ASP.net成员资格是一个设计糟糕的API,开箱即用是不安全的,维护得不好,给开发人员带来了错误的安全感.如果你没有构建一个框架,身份验证是一个周末项目,但是,大多数.net开发人员盲目地遵循官方API,假设像MS这样的大公司可以推出一些体面的东西.
asp.net authentication asp.net-mvc forms-authentication asp.net-membership
我有一个使用窗体身份验证设置为45分钟超时的asp.net 4.0应用程序。我想在会话过期后将用户重定向到超时页面。谁能告诉我该怎么做?我正在运行.net 4.0。
web.config具有:
<authentication mode="Forms">
<forms name=".ASPXAUTH" loginUrl="~/Login.aspx"
defaultUrl="~/Default.aspx" protection="All" timeout="45"
requireSSL="false">
</forms>
</authentication>
Run Code Online (Sandbox Code Playgroud)
Global.asax.cs文件具有:
void Session_End(object sender, EventArgs e)
{
Response.Redirect("~/Timeout.aspx");
}
Run Code Online (Sandbox Code Playgroud) 我想制作一个AuthorizeAttribute包含Message属性的自定义.问题是,我的FormsAuthentication重定向到指定的loginUrl.该视图如何访问属性的Message属性?
例如,我使用自定义AuthorizeAttribute进行此操作
[Authorize(Message="You must be logged in to see user settings.")]
public ActionResult Settings()
{
return View();
}
Run Code Online (Sandbox Code Playgroud)
FormsAuthentication如果用户没有登录,它会被重定向到/ Account/LogOn(感谢web.config中的设置).我想在LogOn View上显示"您必须登录才能看到用户设置",以便用户知道为什么他们被重定向到LogOn页面
asp.net-mvc forms-authentication authorize-attribute http-status-code-401
我正在使用表单身份验证,当前在用户登录时创建表单身份验证票证,如果他们请求保留登录,则设置约5天的到期时间.
我现在需要创建一个额外的cookie来存储一些额外的设置,如果用户通过身份验证,我希望能够获得其表单身份验证票据到期的日期/时间,表单票证是否持久,以及将其设置为我的其他cookie的到期日,但我不知道如何获取该表单auth到期日期/时间或检查它是否持久.
可以从加密的表单身份验证票中提取此信息吗?
我有一堆控制器和相关的视图需要对它们应用基于角色的身份验证.我正在考虑在其上安装一个带有[authorize]属性定义的基本控制器,以便我可以让所有从该基类继承的控制器在登录后才可用.我测试过这个工作.我不确定这是否是最好的做法,或者这种方法是否会有任何陷阱.
将来,我需要只有特定角色的用户才能访问某些页面.角色列表将来自数据库表.因此,我只是在它继承的基本控制器中进行更改,而不是更改所有相关的控制器.这是正确的做法吗?
谢谢你的时间.
asp.net-mvc authorization forms-authentication asp.net-mvc-3
我正在为我的公司创建一个相当简单的网站来标记库存和标签.这很顺利,现在我们想要添加一个带有用户名和密码的登录元素.这是在C#和ASP.NET 4中完成的,因此已经内置了许多此功能.
我在一个引用App_Data文件夹中的数据库的页面中添加了一个Login Web部件.但是,当我将它发布到应用服务器时,它不希望自动将任何内容放在App_Data文件夹中,当我尝试登录时出现SQL错误:
> A network-related or instance-specific error occurred while
> establishing a connection to SQL Server. The server was not found or
> was not accessible. Verify that the instance name is correct and that
> SQL Server is configured to allow remote connections. (provider: SQL
> Network Interfaces, error: 26 - Error Locating Server/Instance
> Specified)
Run Code Online (Sandbox Code Playgroud)
最初,当程序运行时,它是一个简单的标记扫描页面,它将字段添加到另一个数据库中的小表.我很好奇程序是否存在引用两个数据库的问题以及C#如何用于此类身份验证以及是否有更简单的方法来执行此操作.
我正在尝试设置一个Intranet MVC应用程序,通过表单身份验证对我们公司的AD进行身份验证; 我们希望用户必须登录.发布到Login操作时,我收到以下异常:"要调用此方法,"Membership.Provider"属性必须是"ExtendedMembershipProvider"的实例." 还有其他人有这个问题吗?
Web.config文件:
<connectionStrings>
<add name="ADConnectionString" connectionString="LDAP://example.domain.com/DC=example,DC=domain,DC=com"/>
</connectionStrings>
<appSettings>
<add key="enableSimpleMembership" value="false" />
</appSettings>
<system.web>
<authentication mode="Forms">
<forms name=".ADAuthCookie" loginUrl="~/Account/Login" timeout="45" slidingExpiration="false" protection="All"/>
</authentication>
<membership defaultProvider="ADMembershipProvider">
<providers>
<clear/>
<add name="ADMembershipProvider" type="System.Web.Security.ActiveDirectoryMembershipProvider" connectionStringName="ADConnectionString" attributeMapUsername="sAMAccountName"/>
</providers>
</membership>
Run Code Online (Sandbox Code Playgroud)
的AccountController:
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Login(LoginModel model, string returnUrl)
{
//The call to WebSecurity.Login is what throws
if (ModelState.IsValid && WebSecurity.Login(model.UserName, model.Password, persistCookie: model.RememberMe))
{
return RedirectToLocal(returnUrl);
}
// If we got this far, something failed, redisplay form
ModelState.AddModelError("", "The user name …Run Code Online (Sandbox Code Playgroud) 我正在尝试基于表单的身份验证,但是我不知道为什么,在登录页面上输入正确的用户名/密码后,它将重定向我到错误页面而不是index.jsp。
当我输入:
http://localhost:8080/<context>/secure/index.jsp
Run Code Online (Sandbox Code Playgroud)
我得到登录页面。但是,当我输入用户名/密码(manager / manager)时,它将带我到error.html而不是index.jsp。
WEB.XML:
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>FormBasedAuthentication</display-name>
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/login.html</form-login-page>
<form-error-page>/error.html</form-error-page>
</form-login-config>
</login-config>
<security-role>
<role-name>role1</role-name>
</security-role>
<security-constraint>
<web-resource-collection>
<web-resource-name>SecurePages</web-resource-name>
<description>Security constraint for JSP resources</description>
<url-pattern>/secure/*</url-pattern>
<http-method>POST</http-method>
<http-method>GET</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>role1</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>
Run Code Online (Sandbox Code Playgroud)
TOMCAT-USER.XML:
<tomcat-users>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-status"/>
<role rolename="manager-jmx"/>
<role rolename="role1"/>
<user username="manager" password="manager" roles="role1"/>
</tomcat-users>
Run Code Online (Sandbox Code Playgroud) 我想使用OWIN管道向客户端发出身份验证cookie,当用户注销时清除cookie但我不想使用恼人的aspnet身份提供者.它只是不适合项目,我试了很长时间,它只是不适合.所以我决定不使用它.我只想使用OWIN管道.
这是可能的还是我应该回到旧的表单身份验证?