Tag: 身份validation

从servletfilter重定向Web客户端(通过AJAX进行客户端 – 服务器连接)

我正在使用JAASRealm身份validation(在tomcat 7中)。 这是servlet的filter: private String loginPage = “welcome.jsp”; @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException { if ((request instanceof HttpServletRequest) && (response instanceof HttpServletResponse)) { HttpServletRequest httpServletRequest = (HttpServletRequest) request; HttpServletResponse httpServletResponse = (HttpServletResponse) response; if (httpServletRequest.getUserPrincipal() == null) { // User is not logged in, redirect to login page. […]

在ajax表单发布之前检查mvc中的http授权

在构建将jquery ajax合并到其GUI中的内容管理系统时,我遇到了一个障碍。 似乎有些客户花了太长时间思考他们将要编写什么,因此服务器会话将其记录下来,自然是他们不知道的网络。 当他们尝试提交更改时,我使用ajax调用服务器来保存数据。 我期望接下来发生的是MVC服务器应用程序将返回“401 Unauthorized”状态。 然后,我可以获取我的jquery ajax对象,要求用户登录,然后在用户获得授权后重新发送更改。 但是,从MVC应用程序实际返回的是“302 Found”状态和到我的登录表单页面的重定向URL。 登录表单页面返回“200 OK”状态代码,jquery ajax对象调用成功事件,该事件告诉用户一切都成功,因为这就是MVC应用程序所说的内容。 我有没有办法让MVC应用程序以我认为应该或我必须修改我的jquery ajax事件来检测登录页面? 更新: 我用了reflection器来查看MVC代码和authorize属性,返回一个NotAuthorizedResult,其代码如下(0x191 = 401) public override void ExecuteResult(ControllerContext context) { if (context == null) { throw new ArgumentNullException(“context”); } context.HttpContext.Response.StatusCode = 0x191; } 我在想,表格授权HttpModule可能会看到401并强制重定向。

身份validation标头不发送JQuery Ajax

我在Apache Tomcat 7中托管了带有基本身份validation的Web服务器。 我有Tomcat用户’tomcat’,角色’tomcat’,密码’tomcat’。 以下是我在客户端的web.xml文件和脚本片段。 在web.xml testservice JAX-RS Tools Generated – Do not modify testservice com.sun.jersey.spi.container.servlet.ServletContainer 1 testservice /rest/* testservice /* GET POST tomcat NONE BASIC 客户端脚本: $.ajax({ type: “GET”, beforeSend: function (request) { request.setRequestHeader(“Authorization”, “Basic dG9tY2F0OnRvbWNhdA==”); }, url: “http://localhost:1222/testservice/rest/test/users”, dataType:”jsonp”, success: function(res) { alert(res); }, error: function(err) { alert(err); } }); 我很确定Web Service和Basic身份validation没有问题。 但是从客户端脚本,没有发送身份validation标头。 […]

请在401时帮助测试Firefox jQuery ajax中的CORS问题

这让我疯狂。 jQuery 1.4.2,windows XP sp3 这是我的考试。 加载Firefox 3.5+ http://plungjan.name/test/testcors.html 作品 将文件保存到硬盘并从那里运行 从我的办公室外部工作和内部工作没有 同样有趣的是,我不能一气呵成。 背景:我对使用CORS的内部Web服务进行了GET 。 请不要发布有关FF的任何答案,因为这里和此处详细介绍了自v3.5以来的处理跨域请求 它可以在IE8和FF3.6.6中从一台服务器运行到另一台服务器,现在几乎从文件系统(文件:///)到服务。 仅从文件系统和仅当FF 3.6.6需要协商(用户已经登录,授权并发送凭证!)时 ,我是否在协商后得不到数据。 jQuery xhr返回状态0,没有data / responseText或者其他什么对我来说,jQuery会对401的xhr作出反应并保存xhr而不是200以后的OK 这是我在提醒XHR对象时在通信结束时得到的结果: Status:success Data:[] XHR: some native functions, readyState:4 status:0 responseXML:null responseText: withCredentials:true 如果我调用同一台服务器但不需要凭据,则返回的数据就是精确的跨域 所以沟通如下: GET /restapplicationusingcors/authenticationneeded-internal/someid Accept: application/json Accept-Language: en . . Origin: null Cookie: LtpaToken=… 回报是 HTTP/1.1 401 Unauthorized Server: […]

Symfony2:AJAX请求:如何在需要时处理身份validation?

使用Symfony2我已经实现了一个AJAX操作来管理我的应用程序中的一些书签(添加/删除)。 因此,用户需要进行身份validation才能继续。 我有一个解决方案,将用户重定向到登录页面,但我认为最好使用事件来处理此重定向。 实际解决方案 检查用户的身份validation的方式与FOSUserBundle中的方式相同。 路由: fbn_guide_manage_bookmark: path: /bookmark/manage defaults: { _controller: FBNGuideBundle:Guide:managebookmark } options: expose: true requirements: _method: POST 控制器: public function manageBookmarkAction(Request $request) { if ($request->isXmlHttpRequest()) { $user = $this->getUser(); if (!is_object($user) || !$user instanceof UserInterface) { return new JsonResponse(array(‘status’ => ‘login’)); } // DO THE STUFF } } jQuery: $(function() { $(‘#bookmark’).click(function() […]

JQuery Mobile – 用户登录最佳实践

我正在使用JQuery Mobile构建一个移动界面,用于需要用户身份validation的现有Web应用程序,我无法确定实施登录过程的最佳方法。 我不太关心服务器端身份validation,而是如何在用户端实现它。 经过一些实验,似乎选项是: 使用POST \ redirect提交标准表单: -Disable自动ajax with data-ajax=”false” – 用户提交,检查服务器上的凭据,然后在成功时将重定向发送到应用程序,或者在失败时返回登录页面。 使用$.mobile.changePage Ajax方法 – 通过Ajax发送用户名/密码 – 基于响应,使用$.mobile.changePage添加应用程序的$.mobile.changePage或显示错误消息 使用window.location.replace Ajax方法 – 与选项2类似,除了使用window.location.replace添加app的首页 使用POST的Ajax方法; 仅在登录失败时重定向 -Keep ajax启用表单提交。 – 在服务器端,将您的用户身份validationfunction与应用程序的输入页面组合在一起,只有在设置了表单域时才会执行。 – 成功登录后,返回应用程序的首页。 – 登录失败,重定向回登录页面。 – 如果未设置表单值,请检查用户是否已正确登录,然后返回标准输出页面。 如果未登录,请重定向回登录。 一些考虑: – 必须使用POST以避免将登录数据附加到URL – 保持正确的后退按钮function,以便用户友好的导航似乎有点棘手。 – 我希望尽可能轻松地使页面重新加载,使流程尽可能轻松 有任何想法吗? 编辑: 我找到了第四种方法,这可能是最好的方法。 它避免了POST / redirect方法导致的后退按钮function问题。 如果用户在第一次尝试时进行身份validation,则会在整个时间内保持平滑的页面转换。 如果不是,则在成功登录后将继续保持页面转换流程。 此外,JQM的所有内置error handlingfunction仍然可用。

CAS身份validation和使用jQuery AJAX重定向

我有一个HTML页面需要使用jQuery AJAX函数向受CAS保护的( 中央身份validation服务 )Web服务发出请求。 我有以下代码: $.ajax({ type: “GET”, url: request, dataType: “json”, complete: function(xmlHttp) { console.log(xmlHttp); alert(xmlHttp.status); }, success: handleRedirects }); request变量可以是CAS服务器( https://cas.mydomain.com/login?service=myServiceURL ),也可以直接发送到服务(然后应该重定向回CAS以获取服务票证)。 Firebug显示正在进行请求,并返回302重定向。 但是, $.ajax()函数不处理重定向。 我写了这个函数来解决这个问题: var handleRedirects = function(data, textStatus) { console.log(data, textStatus); if (data.redirect) { console.log(“Calling a redirect: ” + data.redirect); $.get(data.redirect, handleRedirects); } else { //function that handles the actual […]