form身份验证

asp.net  自带的身份验证,form身份验证。

forms身份验证:身份登录,权限验证,传值。

1.登录:

     验证登录是否正确,用FormsAuthentication.setAuthcookie(已验证的用户名称,是否持久)来创建一个验证的票据,用于加密存储用户登录名<Encrypt()函数加密>,存在context.user 中,并更具加密创建一个cookie.

     singout()用于注销。

2.授权:

     UrlAuthorizationModule用于权限管理,可以再config里面设置。

      <?xml version="1.0"?>

        <configuration>

        <system.web>

          <authorization>

            <allow users="*"/> //此处若有allow  必须在deny 前面!

          </authorization>

        </system.web>

        </configuration>

3.传值:

    http 协议是无状态的,无法验证访问的发起人,单项目往往需要验证是否为同一用户,但vs自带的context.user 只会存用户名,无法存储其他的信息,这时我就可以重新实现接口IPrincipal ,定义自己的context.user 来传更多的信息。

  

public class MyFormsPrincipal<TUserData> : IPrincipal where TUserData : class, new()
{
    private IIdentity _identity;
    private TUserData _userData;

    public MyFormsPrincipal(FormsAuthenticationTicket ticket, TUserData userData)
    {
        if( ticket == null )
            throw new ArgumentNullException("ticket");
        if( userData == null )
            throw new ArgumentNullException("userData");

        _identity = new FormsIdentity(ticket);
        _userData = userData;
    }
   
    public TUserData UserData
    {
        get { return _userData; }
    }

    public IIdentity Identity
    {
        get { return _identity; }
    }

    public bool IsInRole(string role)
    {
        // 把判断用户组的操作留给UserData去实现。 IPrincipal principal = _userData as IPrincipal;
        if( principal == null )
            throw new NotImplementedException();
        else return principal.IsInRole(role);
    }

 

大神—超级链接:https://www.cnblogs.com/fish-li/archive/2012/04/15/2450571.html(全部学于这大佬)

posted @ 2018-02-10 13:56  懵懂的半壶  阅读(166)  评论(0编辑  收藏  举报