MVC3 自定义一致权限验证

MVC3 自定义统一权限验证
1  使用自定义AuthorizeAttribute属性

customAuthorizedAttribute:authorizeAttribute
{
override public void OnAuthorization (AuthorizationContext filterContext)
{
    进行逻辑判断

}

}


给需要进行验证的controller 或者action添加属性标签[customAuthorized]

2  使用BaseController:Controller
        protected override void OnAuthorization(AuthorizationContext filterContext)
        {
            base.OnAuthorization(filterContext);
        }
        protected override void HandleUnknownAction(string actionName)
        {
            base.HandleUnknownAction(actionName);
        }

*******************************************************************************

如,断定用户是否登岸,断定用户session是否为空,一般会这个写在页面中:

非论是多情的诗名、摩登的文章,还是闲暇的欢欣,什么都不克不及庖代无比密切的友情。if(HttpContext.Session.IsNewSession)
{
  // go to Logon
}

每个须要验证的页面都要如许去写同样的代码,如许的法度是我们不供给的,因为它反复了本身。

当.net呈现Attribute之后,MVC呈现了之后,改变了这一切,若是断定这个页面的接见理否须要登岸或者其它权限,只须要写类似如许的代码即可:

       [UserAuthentication(UserToUrlEnum = UserToUrlEnum.Login)]

        public ActionResult RegisterRedirect()

        {

            // code

        }

而一般来说,我们的UserAuthentication这个类,我们下文称为过滤器,一般是如许来定义的:

namespace _20110711MVC3的进修.Filter

{

    /// <summary>

    /// 验证类型列举

    /// </summary>

    public enum UserToUrlEnum

    {

        /// <summary>

        /// 登录

        /// </summary>

        Login,

        /// <summary>

        /// 注册

        /// </summary>

        Register,

        /// <summary>

        /// 认证

        /// </summary>

        Certificate,

    }

&#160;

    /// <summary>

    /// 用户验证过滤器

    /// </summary>

    public class UserAuthentication : AuthorizeAttribute

    {

        const string DOMAIN = "http://www.test.com";

        public UserToUrlEnum UserToUrlEnum { get; set; }

        /// <summary>

        /// 机关函数

        /// </summary>

        public UserAuthentication()

        {

            this.UserToUrlEnum = UserToUrlEnum.Login;

        }

        /// <summary>

        /// 履行前验证

        /// </summary>

        public override void OnAuthorization(AuthorizationContext filterContext)

        {

            if (filterContext.HttpContext.Session.IsNewSession && !ClientHelper.Current.HasUser)

            {

                switch (this.UserToUrlEnum)

                {

                    case UserToUrlEnum.Login:

                        {

VCommons.Http.CookieHelper.Write("return_page",

HttpContext.Current.Request.Url.ToString());

                            HttpContext.Current.Response.Redirect(DOMAIN +

                            "/Register/Login", true);

                        }

                        break;

                    case UserToUrlEnum.Register:

                        {

filterContext.HttpContext.Response.Redirect(DOMAIN +

"/Register/Register", true);

                        }

                        break;

                }

            }

            else if (this.UserToUrlEnum == UserToUrlEnum.Certificate)

            {

                filterContext.HttpContext.Response.Redirect(DOMAIN + "/Register/Certificate");

            }

&#160;

        }

&#160;

    }

}

小常识:attribute可以加在类的上方,也可以加在办法的上方,按照实际景象而定。


1楼nnsword昨天 14:57
新建一个类BaseController,这个类继承Controller类.并重写Controller里的OnActionExecuting函数:nprotected override void OnActionExecuting(ActionExecutingContext filterContext)n{n //用户权限集n var listRightID=new List<int>();nvar blnNoRight = false;nvar strControllerName = filterContext.Controller.ToString();nif (strControllerName.Contains("AController"))nif (!listRightID.Contains(Convert.ToInt32(GlobalMember.EnumRight.BookType)))nblnNoRight = true;nif (strControllerName.Contains("BTypeController"))nif (!listRightID.Contains(Convert.ToInt32(GlobalMember.EnumRight.MembershipType)))nblnNoRight = true;nif (strControllerName.Contains("CController"))nif (!listRightID.Contains(Convert.ToInt32(GlobalMember.EnumRight.Role)))nblnNoRight = true;nn//无权限跳转nif(blnNoRight){nResponse.Redirect("Main/Error");n}n}
1.最简单配置spring-security.xml,实现1 2.实现UserDetailsService 3.实现动态过滤用户权限 4.实现AuthenticationProvider,自定义参数验证
  • Spring Boot Shiro权限管理--自定义 FormAuthenticationFilter验证码整合
  • .net core 同时实现网站管理员后台、会员、WebApi登录及权限控制 首先我使用的是.net core 的Authentication。我们事先定义两个自定义验证方案: 在Startup.cs中public void ConfigureServices(IServiceCollection services)添加如下代码 难后就可以了,我要只要在对应的控制类上,分别加上:
  • Layman 分享到朋友圈或发送给朋友 微信JS接口 生成微信【JS-SDK】权限验证签名 发送给【朋友】和分享到【朋友圈】参数自定义
  • 关于asp.net mvc3的用户权限验证解决思路
  • ASP.NET Core使用自定义验证属性控制访问权限详解
  • 微博回调接口 通过vue前端传入的code,微博身份验证 自定义权限类 接收vue端传过来的code(微博的用户code) 1.使用微博用户code+微博开发者账号信息换取微博的认证access_token 2. 根据uid 查询绑定情况 返回动作, 登录成功/需要绑定用户 type 0 登录成功, 1, 授权成功, 需要绑定 4. 如果绑定了, 返回token, 登录成功 jwt_response_payload_handler为user模块定义的jwt返回的信息 5. 如果没绑定, 返回标志, 让前端跳转到绑定页面 把三方的用户信息,和本地的用户信息进行绑定 三方用户id 本地用户外键,关联User表 1,2 ...
  • Redis 缓存 + Spring 的集成示例 1. 依赖包安装 2. Spring 项目集成进缓存支持 3. 缓存某些方法的执行结果 4. 缓存数据一致性保证 5. 自定义缓存数据 key 生成策略 6. 缓存的验证 7. 注意事项 后记 参考资料
  • 为什么老是IMPORT 不了这个文件里面的类,郁闷一个下午,刚学JAVA,请大家帮小弟我看看,谢了
  • sqlserver中 存储过程中convert(varchar(25),@rowspage)是什么意思,该怎么解决