问题描述
因为本人开发web比较少,请教一下大家,asp.netmvc中,我们用到AuthorizeAttribute进行判断用户是否登录,如果已经登录即跳到对应的Action,如果没有登录或者登录失效,即跳到登录页面,如:filterContext.Result=newRedirectResult("/Account/LogOn")
我碰到的问题是:如果界面上是ajax请求的,这个方法就行不通了,如果是自己写的ajax请求,如可以根据返回值进行跳转,但在View中,我们经常用到第三方的一些组件,比如数据列表等,他们把ajax请求已封装好,只需要提供URL,这时候我们无法对返回值进行判断,这种情况,大家是怎么处理的?
解决方案
解决方案二:
身份认证+权限管理。认证在登录的时候做,合法用户就进来,进来以后根据身份所属的权限,分配操作(如增删查改)。没有操作权限的功能就不提供。
解决方案三:
引用楼主liao_ken的回复:
他们把ajax请求已封装好,只需要提供URL,
url可以有参数,这是规范的http请求方式。那么url中就可以提交你的前端获得的“会话授权passport(或者叫token)”。用了一点asp.net,不应该连基本的httpget/post都不会处理了。
解决方案四:
事实上,对于这种数据/功能服务的接口应用方式,那么服务器端所谓的mvc完全就是荒唐可笑的了。你的服务器端用一个轻量级的ashx则可以直接承载标准化的http请求,例如可以通过Request.Form[....]获取post参数,可以通过Request.QueryString[....]获取get参数,可以通过newStreamReader(Request.Request.InputStream).ReadToEnd()获得以文本消息体方式提供的整个参数(例如以一个任意嵌套层的复杂的json对象)。这就是基本的http服务。asp.net程序要回归“简单一般程序”的编程。
解决方案五:
你可以把ajax封装一下,然后在这个权限类里面过滤ajax请求过来的方法,如果是ajax请求,判断用户登录信息是否存在,不存在的话,则返回一个错误码,这个错误码在你封装的ajax的error方法里处理